Bashスクリプトのエラーを理解していません。
#!/bin/bash
newFile=""
for file in *
do
newFile={$file/ /_} # so as to replace spaces with underscores
mv {$file} {$newFile}
done
newFile
これはその行のコマンドではないと文句を言います。newFile={$file/ /_}
私が何か間違っているようですが、この問題に引き続き転倒しています。
ベストアンサー1
すべての空白に対してこれを行うには、$位置を移動して/
最後の場所を追加する必要があります。また、ファイル名のスペースを mv 引数間の区切り文字として扱うので、変数を引用する必要があります。
#!/bin/bash
newFile=""
for file in *
do
newFile=${file// /_} # so as to replace spaces with underscores
mv "{$file}" "{$newFile}"
done
他の回答で述べたように、このスクリプトの半分は重複しています。
newFile=""
後で代入で変数を最初に参照できるため、まったく必要ありません。
newFile=${file// /_}
割り当て自体は必要ありませんが、パラメータ置換は元の値を変更しないためです。
したがって、次のように書き換えることができます。
#!/bin/bash
for file in *
do
mv "${file}" "${file// /_}"
done