を失敗します。その後、私は与えられたオプションと引数を指定してこのコマンドを実行したいは、シェルスクリプトからコマンドを実行し、私はこのような行が含まれているファイル読み取りしようとしている
Run COMMAND with options "OPTIONS" and arguments "ARGUMENTS"
を。たとえば、私は、これらのコマンドを実行したいと思います:
Run pwd with options "" and arguments ""
Run ls with options "-al" and arguments "$HOME"
Run ls with options "-al" and arguments "Example: \"strange folder name\""
これは
#!/bin/bash
while read -r line
do
COMMAND=$(echo "$line" | cut -d" " -f 2)
OPTIONS=$(echo "$line" | cut -d" " -f 5 | tr -d '"')
ARGUMENTS=$(echo "$line" | cut -d" " -f 8)
$COMMAND $OPTIONS $ARGUMENTS
done <$1
最初の例は、それは、二番目は私にエラーls: cannot access $HOME: No such file or directory'
を与えている必要があり、三番目が保存されていないとして働いている私のコードですフォルダ名は$ARGUMENTS
に正しく設定されています。
このように 'cut'を使わないでください。あなたのコードは、 'read -rコマンド中のオプションと同じです。 ... done'(但し、これは変数に 'a'、' b'、 'c'を割り当てます)。 –
@WilliamPursellの提案は、より良い方法です。コードをさらに読みやすく自己文書化するために、不要な変数をignoreという名前の変数に置き換えることができます。read -r ignore COMMAND ignore ignore OPTIONS ignore ignore ARGUMENTS; ... done'。 – alvits