というファイルがありますテストスクリプトというプログラムを実行する必要があります。コマンドの実行次のように:
./run_command <input path>
スクリプトに次のパラメータを提供する場合:
./test_script argument1=sometext argument2=othertext inputpath=/folder1/folder2/file.txt argument4=moretext
スクリプトでパラメータを見つける方法入力パス=/folder1/folder2/file.txtそして通過/フォルダ1/フォルダ2/file.txt到着コマンドの実行? inputpath=/folder1/folder2/file.txt が常に 3 番目の位置にあるわけではなく、提供される引数の数が異なる可能性があることに注意してください。
ベストアンサー1
そしてzsh
:
#! /bin/zsh -
inputpath=(${${(M)argv:#inputpath=*}#*=})
(($#inputpath > 0)) && ./run-command $inputpath
すべて抽出道s をinputpath=path
スクリプトの引数として使用し、空でない引数を$inputpath
配列に格納します。その後、./run-command
これらの入力パスが見つかったら、パラメータとして実行します。
POSIXlyでは、次のことができます。
#! /bin/sh -
run_with_extracted_keyword() (
cmd="${1?}" keyword="${2?}"
shift 2
for arg do
case $arg in
("$keyword="*) set -- "$@" "${arg#*=}"
esac
shift
done
[ "$#" -gt 0 ] && exec "$cmd" "$@"
)
run_with_extracted_keyword ./run-command inputpath "$@"
GNUlyでは、次のことができます。
#! /bin/bash -
set -o pipefail
printf '%s\0' "$@" |
LC_ALL=C grep -zPo '^inputpath=\K(?s:.*)' |
xargs -r0 ./run-command