Bashスクリプトから前の行に移動する方法

Bashスクリプトから前の行に移動する方法

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'

すべてが期待どおりに動作します。

lsPATH以前の実装を環境変数に入れる必要があります。

したがって、あなたの場合は、ディレクトリと定義をtempcommand変数に追加する必要があります。おそらく最も簡単な方法は、以下を追加することです。PATHlsalias

. ~/.bashrc

あなたのスクリプトに。

おすすめ記事