![쉘 스크립트를 사용하여 *ino로 끝나는 파일 이름을 반환하려면 어떻게 해야 합니까?](https://linux55.com/image/183732/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20*ino%EB%A1%9C%20%EB%81%9D%EB%82%98%EB%8A%94%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EB%B0%98%ED%99%98%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
저는 쉘 프로그래밍을 처음 접했습니다. 저는 쉘 스크립트를 사용하여 파일을 컴파일 .ino
(여기: tb_20200930.ino
)하고 Raspberry Pi 4에서 Controllino MAXI Automation(Arduino 기반)으로 업로드합니다.
#!/bin/bash
echo "compile"
arduino-cli compile -v --fqbn CONTROLLINO_Boards:avr:controllino_maxi_automation ./tb_20200930.ino
echo "workaraound a bug in arduino-cli"
rm -rf ./tb_20200930.CONTROLLINO_Boards.avr.controllino_maxi_automation.hex
cp ./tb_20200930.ino.CONTROLLINO_Boards.avr.controllino_maxi_automation.hex ./tb_20200930.CONTROLLINO_Boards.avr.controllino_maxi_automation.hex
echo "liberate the serial port for upload"
sudo systemctl stop testbench.service
echo "upload to the arduino"
arduino-cli upload -v -p /dev/ttyACM0 --fqbn CONTROLLINO_Boards:avr:controllino_maxi_automation
echo "start the program on the raspberry pi"
sudo systemctl start testbench.service
이 스크립트를 개선하여 더 이상 변경할 필요가 없도록 하고 싶습니다. 스크립트에서 .ino
파일을 검색하여 매개변수로 전달하고 싶습니다. 파일이 2개 이상인 경우 .ino
스크립트는 어떤 파일을 컴파일해야 하는지 묻습니다. 파일을 찾을 수 없으면 .ino
오류 메시지가 인쇄됩니다. 나는 노력했다
INOFILE="*.ino"
#echo $INOFILE
stringarray=($INOFILE)
a=0
while [ ${stringarray[$a]} -ge 0 ]
do
done
echo ${stringarray[0]}
echo ${stringarray[1]}
비어 있는지 어떻게 알 수 있나요 stringarray[$a]
? 유형은 무엇입니까 INOFILE
?
답변1
이것을 시도하고 변수를 설정하십시오 <path_to_ino_files>
.
#!/bin/bash
declare -a stringarray
stringarray="$(ls -1 <path_to_ino_files> | grep .ino\$)"
if [ ${#stringarray[@]} -ne 0 ]; then
for inofile in "${stringarray[@]}"
do
ino="$(realpath "$inofile")"
arduino-cli compile -v --fqbn CONTROLLINO_Boards:avr:controllino_maxi_automation "$ino"
done
fi
if [ ${#stringarray[@]} -eq 0 ];
배열이 비어 있는지 확인하십시오
stringarray[@]
. 배열의 모든 요소를 포함합니다.
for inofile in "${stringarray[@]}"
: 배열을 반복하고 현재 배열 값을 inofile 변수에 설정합니다.
realpath "$inofile" :
절대 경로 얻기이노문서.