if / elifステートメントを含むbashスクリプトがあります。
コマンドの出力を取得し、コマンドのデフォルトバージョンではなく関連するif / elifステートメントを実行させる方法はありますか?
たとえば、デフォルトのスクリプトには次のものがあります。
if [ "$command" == "ls" ]
then
ls -la
elif # ...(hundreds more if/elif statements here) ...
fi
私が実行している場合:
echo "ls" >> tempcommand; bash tempcommand
ls
私のスクリプトでは、上記のデフォルトスクリプトで指定されたifステートメントを介してこの実行コマンドをパイプできますか?
ベストアンサー1
私はあなたと同じユースケースを持っています。
私のls
実装:
$ cat ~/bin/ls
#!/bin/bash
LD_LIBRARY_PATH=/path/sid-chroot/usr /path/sid-chroot/bin/ls "$@"
$ ls --version
ls (GNU coreutils) 9.1
$ /bin/ls --version
ls (GNU coreutils) 8.32
エイリアスがあります。
$ type ls
ls is aliased to `ls --color=auto -F'
すべてが期待どおりに動作します。
ls
PATH
以前の実装を環境変数に入れる必要があります。
したがって、あなたの場合は、ディレクトリと定義をtempcommand
変数に追加する必要があります。おそらく最も簡単な方法は、以下を追加することです。PATH
ls
alias
. ~/.bashrc
あなたのスクリプトに。