스크립트에서 변수를 설정하기 위해 쉘 기록에서 입력을 검색할 수 있기를 원합니다. 그런 다음 if 루프에서 이 변수를 사용하고 싶지만 변수를 올바르게 설정할 수 없습니다.
입력 단계: 초기 입력은 명령줄을 통해 이루어집니다. 여기에 몇 가지 가능성이 있습니다.
-> string
-> string AA
-> string 99
이 문자열은 내 스크립트를 실행하는 별칭과 연결되어 있습니다. 내 스크립트의 주요 기능은 다음과 같습니다.
inputsubstring()
{
strings /user/.sh_history | grep '^\string' | tail -1 | cut -d' ' -f2
}
따라서 처음에는 다음과 같은 문자열을 얻습니다.
substring
substring AA
substring 99
함수 마지막에 cut 명령을 사용하고 있기 때문에 이론적으로 다음과 같은 출력을 받게 됩니다.
AA
99
이제 위 명령에 변수를 설정하면 영숫자 출력을 찾는 데 작동하지만 두 번째 필드가 없는 문자열에는 제대로 작동하지 않습니다. 사실 설정을 못해요. 문제가 있는 문자열로 스크립트를 실행하면 실제로 마지막 영숫자 값에 대한 정보가 에코됩니다. 어떻게 작동하게 만들 수 있나요?
나는 다음과 같은 또 다른 가치를 창출하려고 노력합니다.
secondvar=${first:-default}
그러나 그것은 작동하지 않았습니다.
또한: 문자열 길이와 변수 할당을 사용해 보았지만 작동하지 않았습니다. 어떻게 해야 합니까?
업데이트: "문자열"을 특정 횟수만큼 개별적으로 가져오면 되므로 기록을 연결하고 마지막 입력을 확인하는 별도의 함수를 만들었습니다.
laststring()
{
cat /user/history | tail -1
}
답변1
History 명령을 사용하여 필요한 명령을 검색하고 해당 변수를 할당할 수 있습니다.
실행 ls
하고 기록에 명령이 99번으로 표시되면 다음과 같이 변수에 할당할 수 있습니다.
var=!99