OSX 명령줄에는 다음과 같은 몇 가지 논리가 있습니다.
for i in {1..10}
do
for j in {1..10}
do
echo "test inner"
done;
echo "test outer"
done
잘 작동합니다. 하지만 에서 실행하고 싶습니다 nohup
. 그래서 위의 내용을 한 줄로 결합하여 맞춰야합니다.nohup sh -c "{a single line}"
그러나 다음 줄에서는 오류가 발생합니다. 위의 모든 개행 문자를 건너뜁니다.
sh -c 'for i in {1..10} do for j in {1..10} do echo "test inner" done; echo "test outer" done'
실수:
sh: -c: line 0: syntax error near unexpected token `echo'
sh: -c: line 0: `for i in {1..10} do for j in {1..10} do echo "test inner" done; echo "test outer" done'
편집하다:
명령에 대한 자격 증명이 가볍게 보호되기 때문에 파일로 실행하고 싶지 않습니다. 내가 생각할 수 있는 가장 쉬운 방법은 공유 VM에 파일이 남아 있지 않도록 명령으로 실행하는 것입니다. 이것이 자격 증명을 얼마나 잘 보호하는지, 아니면 더 좋은 방법이 있는지는 모르겠습니다. 더 많은 제안/아이디어를 환영합니다.
편집하다:
bash와 작은따옴표를 사용하여 작동시키세요. (Tigger의 답변을 바탕으로)
bash -c 'for i in {1..10}; do for j in {1..10}; do echo "test inner"; done; echo "test outer"; done;'
답변1
내 생각에는 두 가지 옵션이 있습니다.
- 스크립트 파일에 넣고 실행
- 위의 더 큰 코드 창에 있는 모든 개행 문자를 세미콜론으로 바꿉니다.
개인적으로는 1을 선택하겠습니다.
답변2
매개변수에 포함된 줄바꿈에는 문제가 없습니다 sh -c
. 대신 구문(이제 다른 쉘에서 지원됨) {1..10}
입니다 . on 이외의 것을 출력하는 경우 이는 POSIX 적합성 위반이므로 새 버전에서 이를 수정할 준비를 해야 합니다. 당신은 그것을 사용할 수 있습니다 :zsh
sh
sh
{1..20}
echo {1..20}
zsh -c '
for i in {1..10}
do
for j in {1..10}
do
echo "test inner"
done
echo "test outer"
done'
또는
sh -c '
i=1; while [ "$i" -le 10 ]
do
j=1; while [ "$j" -le 10 ]
do
echo "test inner"
j=$((j + 1))
done
echo "test outer"
i=$((i + 1))
done'
하지만 단 하나로 할 수 있는 명령을 100개나 실행하는 것은 echo
어리석은 일처럼 느껴집니다 .
awk 'BEGIN{
for (i=1; i<=10; i++) {
for (j=1; j<=10; j++)
print "test inner"
print "test outer"
}}'
원하는 경우 한 줄에 넣을 수 있습니다.
awk 'BEGIN{for(i=1;i<=10;i++){for(j=1;j<=10;j++)print"test inner";print"test outer"}}'
답변3
한 줄로 변환해 보세요. ;
올바른 위치에 일부를 추가했습니다 .
for i in {1..10}; do for j in {1..10}; do echo "test inner ${j}"; done; echo "test outer ${i}"; done;
위 줄은 작동 bash
하지만 실행하려면 해당 범위 구문이 지원되지 않기 때문에 (내가 아는 한) sh -c
확장해야 합니다 . 이 경우 다음 줄이 나에게 효과적이었습니다.{1..10}
sh
sh -c 'for i in 1 2 3 4 5 6 7 8 9 10; do for j in 1 2 3 4 5 6 7 8 9 10; do echo "test inner ${j}"; done; echo "test outer ${i}"; done;'
${j}
참고: 확인을 위해 및 를 추가했습니다 ${i}
.