입력 없이 변수 선언

입력 없이 변수 선언

스크립트에서 변수를 설정하기 위해 쉘 기록에서 입력을 검색할 수 있기를 원합니다. 그런 다음 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

관련 정보