변수를 사용하여 수많은 명령을 실행하는 명령줄(unix/linux) 명령을 어떻게 만들 수 있습니까?
-
09-06-2019 - |
문제
다양한 디렉토리의 일부 콘텐츠를 다시 정렬해야 하지만 약간 고통스럽습니다.제가 작업 중인 애플리케이션(루비 앱)을 디버깅하려면 보석을 한 번에 하나씩 보석 폴더로 옮겨야 합니다(긴 이야기입니다.간단히 말해서:하나는 깨져서 어느 것인지 알 수 없습니다.)
그래서 다음과 같은 작업을 수행해야 합니다.
sudo mv backup/gem/foo gem/
sudo mv backup/doc/foo doc/
sudo mv backup/specification/foo.gemspec specification/
매번 "foo"를 교체합니다.다음과 같은 작업을 수행할 수 있는 간단한 쉘 스크립트를 작성하려면 어떻게 해야 합니까?gemMove("foo") 그러면 공백이 채워지나요?
해결책
gemmove라는 파일에 다음을 입력합니다.
#!/bin/bash
foo=$1
if [ x$foo == x ]; then
echo "Must have an arg"
exit 1
fi
for d in gem doc specification ; do
mv backup/$d/$1 $d
done
그럼 해
chmod a+x gemmove
그런 다음 'sudo gemmove foo'를 호출하여 foo gem을 백업 디렉토리에서 실제 디렉토리로 옮깁니다.
다른 팁
다음과 같이 bash 쉘 인수를 간단히 사용할 수 있습니다.
#!/bin/bash
# This is move.sh
mv backup/gem/$1 gem/
mv backup/doc/$1 doc/
# ...
그런 다음 다음과 같이 실행하십시오.
sudo ./move.sh foo
다음을 사용하여 스크립트를 실행 가능하게 만드십시오.
chmod +x move.sh
Bash에서는 다음과 같습니다.
function gemMove()
{
filename=$1
mv backup/gem/$filename gem/$filename
mv backup/doc/$filename doc/$filename
mv backup/specification/$filename.spec specification
}
그럼 그냥 전화하면 돼 gemMove("foo")
스크립트의 다른 곳에서.
제휴하지 않습니다 StackOverflow