내 코드는 다음과 같습니다.
for num in {0001..1000}; do
cd ${num}_1000_solar
sed -i '827s/.*/ if(BigUni==1) fp910=fopen("biguni_${num}.dat","w");/' binary.c
gcc singl.c binary.c -lm
cd ..
done
sed 명령은 루프에서 적절한 값을 넣는 대신 파일에 '{num}'을 씁니다. 줄을 문자열 + 일부 변수로 어떻게 바꿀 수 있습니까?
건배!
${num}
쉘에서가 해석 될 경우 , 작은 따옴표가 아니라 큰 따옴표 (또는 외부 따옴표) 안에 있어야합니다.
for num in {0001..1000}
do
(
cd ${num}_1000_solar
sed -i '827s/.*/ if (BigUni==1) fp910=fopen("biguni_'"${num}"'.dat","w");/' binary.c
gcc singl.c binary.c -lm
)
done
소스 코드에서 파일 이름을 변경하고 a.out
매번 다시 컴파일하는 1000 개의 프로그램을 갖는 것은 C를 남용하는 것입니다. 파일 이름을 프로그램에 대한 인수로 전달해야합니다. 즉, 운동은 설정에 심각한 결함이 있기 때문에 필요합니다.
또한 일반적으로 가능한 경우 cd subdir
나중에 cd ..
스크립트를 사용하지 않습니다. 하위 셸 ( (
및 )
수정 된 스크립트에서)을 실행하면 호출 셸 프로세스가 디렉토리 변경의 영향을받지 않습니다. 궁극적으로 더 안정적입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다