변수를 사용하여 수많은 명령을 실행하는 명령줄(unix/linux) 명령을 어떻게 만들 수 있습니까?

StackOverflow https://stackoverflow.com/questions/74886

  •  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") 스크립트의 다른 곳에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top