해결 방법을 찾지 못해서 누군가 도와 드릴 수 있습니까? 내가 잘 작동 다음 스크립트가 있습니다실행 된 명령에 BASH 스크립트 변수 사용
#!/bin/bash
#Checks the number of lines in the userdomains file
NUM=`awk 'END {print NR}' /etc/userdomains.hristian`;
echo $NUM
#Prints out a particular line from the file (should work with $NUM eventually)
USER=`sed -n 4p /etc/userdomains.hristian`
echo $USER
#Edits the output so that only the username is left
USER2=`echo $USER | awk '{print $NF}'`
echo $USER2
는 그러나, 나는 변수 $ NUM에 맞춰 12 일에 4를 대체를 다음과 같이 작동하지 않습니다 :
USER=`sed -n $NUMp /etc/userdomains.hristian`
내가 시도 따옴표와 $ {}의 여러 가지 조합이 있습니다. 그러나 BASH의 초보자이기 때문에 아무 것도 작동하지 않는 것 같습니다. 난 당신이 이미 시도했습니다 정확히 모르겠어요
당신은 모든 조합을 시도하지 않았다'사용자는 = \ '$ {NUM} P는 /etc/userdomains.hristian의 \''-n 나오지. 참고 사항 : _ 배쉬에서 대문자 변수 이름을 사용하지 마십시오! 여기 잘못하고 있습니다 : '사용자'는 시스템에서 변수 집합과 사용 가능성이 매우 높습니다. 조만간 충돌 할 수 있습니다! 보너스 메모 : backticks를 사용하지 말고 대신'$ (...) '를 사용하십시오 :'USER = $ (sed -n $ {NUM} p /etc/userdomains.hristian)'. –
파일의 마지막 줄을 인쇄하려고합니까? 그렇다면'tail -n1/etc/userdomains.hristian'이 작업을보다 효율적으로 수행 할 것입니다. –
분명히 마지막 행의 마지막 필드. 그것을하는 가장 짧은 방법은 아마도'awk 'END {print $ NF}'/ etc/userdomains.hristian' 일 것이지만,'tail -n1 /etc/userdomains.hristian | awk '{print $ NF}'는 큰 파일에 더 효율적입니다. – Wintermute