スクリプト内のコマンドでエラー:bashが対話的にmvコマンドを認識しますが、私は次のコードでbashスクリプトを書いている
#! /bin/bash
sc_files=`grep -l 'string' /home/test/dirpath/*`
sc_dir='/home/test/mvdir'
for i in $sc_files
do
"mv -f $i $sc_dir";
done
スクリプトの出力が生成: ./test.sh:ライン6 :mv -f /home/test/dirpath/test.txt/home/test/mvdir:そのようなファイルやディレクトリはありません
しかし、この正確なmvコマンドを同じユーザのシェルにコピーすると、ファイルを移動します。ディレクトリには名前が付けられ、スクリプト内のパスがあります(前述のように、コマンドは対話シェルに直接コピーされたときに動作します)。ユーザーはソースディレクトリと宛先ディレクトリの両方に対してrwx権限を持っています。ファイル自体は別のユーザーによって所有されていますが、ディレクトリへの書き込み権限に問題はないはずです。どんなアイデアも高く評価されますか?
良いのですが、たぶん、 'grepの:-)何人かの人々のために' < 'あまりにも多くがあるかもしれません-l 'string'/home/test/dirpath/* | read -r 'は読みやすくなります。 –
ここで最高のものを選ぶのは難しいです。あなたのものは最も細部を持っています(そして、私の記憶をbashでリフレッシュします、それはしばらくありました)。 –
@AaronMcDaid - これは読みやすいかもしれませんが、パイプラインはサブシェルを生成しますが、コマンド置換は発生しません。 – jordanm