쉘스크립트 변수 내 변수
글쓴이: 익명 사용자 / 작성시간: 화, 2021/05/11 - 3:14오후
쉘스크립트에서 변수를 지정하려고 하는데 오류가 나옵니다.
#!/bin/bash abc_1=102 xyz_1=652 abc_2=8 xyz_2=785 abc_3=583 xyz_3=310 for i in {1..3} do echo "xyz_$i - abc_$i equal $(($xyz_$i - $abc_$i))" done
라는 코딩을 짰습니다.
제가 하고자 했던 것은
xyz_1 - abc_1 equal 계산값 xyz_2 - abc_2 equal 계산값 xyz_3 - abc_3 equal 계산값
가 출력되게 하고 싶었지만 계산값이 전부 0으로 나왔습니다.
아무래도 $xyz_$i와 $abc_$i를 인식 못하는 것 같은데 어떻게 해야하나요?
Forums:
음 ..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
제가 질문을 살짝 잘못 쓴 것 같습니다.
제가 질문을 살짝 잘못 쓴 것 같습니다.
xyz_$i와 abc_$i도 변수로 보고 싶다면 어떻게 해야할까요?
또한
와 같은 변수 지정도 eval 로 해결이 가능할까요?
질문을 잘못 쓰셨다기엔 최초 질문이 명확해 보이고,
질문을 잘못 쓰셨다기엔 최초 질문이 명확해 보이고,
아마 답글을 보고 추가로 궁금하신 점이 생긴 것 같습니다.
$abc_1 같은 변수의 값을 파일에서 찾아 그 갯수를 같은 이름의 변수에 저장하는 식인가요?
동적으로 이름이 정해지는 변수이므로 참조할때와 할당할때 모두 eval로 따로 감싸야겠네요.
그리고, grep '$abc_$i' 식으로 single quote를 쓰시면 변수확장이 일어나지 않으므로, $abc_1 같은 변수의 값을 찾는게 아니라 '$abc_$i'라는 문자열 자체를 찾게 됩니다. 정확히 뭘 하시려는지는 모르겠으나, 조금 실험해보시고 목적에 맞게 쓰시면 되겠습니다.
감사드립니다.
감사드립니다.
주신 코드가 바로 제가 원하던 코드였습니다. 덕분에 해결했습니다.
안녕하세요. 구글서치로 eval에 대해서 배우려
안녕하세요. 구글서치로 eval에 대해서 배우려 했으나 해결이 되지 않아 추가 질문을 드립니다.
제가 실제 작성하고 있는 스크립트 중 일부를 약간 간략화 하여 아래 첨부하였습니다.
우선 여기서 문제가 > eval \$a_${i} 부분이 안되는 점. (eval이라는 파일을 만들더군요...)
그 외에도 변수 구현이 안되고 있는지 궁금하여 스크립트 파일을 올립니다.
감사합니다.
음 ..
eval 은 뒤따라 나오는 문자열을 '평가' 한 후에, '실행' 해주는 명령입니다.
eval 뒤에 실행 가능한 명령이 나오지 않으면 쓸모 없죠.
> 뒤에는 file 이 와야합니다.
따라서, '> eval ..' 은 eval 이라는 file 로 redirection 되죠.
그리고 뭔가 잘 안 된다 싶으면, 한 번에 많은 걸 하려 하지 말고, 최대한 쪼개서 해보세요.
미리 다른 변수에 원하는 파일명을 저장한 후에, > 뒤에 그 변수를 적었더라면..
잘은 몰랐더라도 문제를 피해갈 수 있었을 겁니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
감사합니다. 해결됐습니다.
감사합니다. 해결됐습니다.
echo "xyz_$i + abc_$i equal $
echo "xyz_$i + abc_$i equal $((xyz_$i + abc_$i))"
https://kldp.org/comment
https://kldp.org/comment/638767#comment-638767 참조하여 아래와 같이 하실 수도 있습니다.
댓글 달기