common.txt というファイルの名前を Corporate.txt に変更する Unix シェルスクリプトを作成し、名前の変更が成功したことを確認します。 [閉じる]

common.txt というファイルの名前を Corporate.txt に変更する Unix シェルスクリプトを作成し、名前の変更が成功したことを確認します。 [閉じる]
for f in $* 
do
mv common.txt corporate.txt
done

これは正しいですか? ?

ベストアンサー1

単一ファイルの名前のみを変更する場合は、すべての場所パラメータを繰り返す必要はありませんが、すべての場所パラメータを繰り返す場合は、次のようにする必要があります。

for f in "$@"; do

$@二重引用符を使用すると、単語の区切りの影響を受けずにスペースを含む引数を持つことができ、通常はさまざまな理由でより強力です。


スクリプトではmv common.txt corporate.txt、ファイル名はパラメータによって変更されますが(common.txtファイルがスクリプトと同じディレクトリにあると仮定)、名前が変更されたことを確認するためのチェックは行われません。個人的には、ファイルのフルパスを指摘し、それを少し不要な追加の学習体験として使用できます。

そしていくつかの必要な追加は次のとおりです。


これらすべてを使用して、次のスクリプトを作成できます。

#!/bin/sh

file=/path/to/common.txt
path=$(dirname "$file")

if mv "$file" "${path}/corporate.txt"; then
    printf '%s\n' "${file}: renamed successfully" >&2
else
    printf '%s\n' "Failed to move: $file" >&2
fi

おすすめ記事