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
답변2
if mv common.txt corporate.txt; then echo "Success"