Linux 循环;“为了……做”;关于bashshell
如何在bashshell中执行Linux 循环;“为了……做”;关于bashshell,linux,bash,shell,loops,Linux,Bash,Shell,Loops,如何在bashshell中执行for do循环以执行某些应用程序 我有下面的代码,我想运行usb伺服应用程序,鉴于usb伺服的值从190到225,我已经尝试运行代码,但是do的没有给出任何输出,我的伺服没有移动 #! /bin/sh i=190 sleep 0.4 for (( i=190;i<=225;i++ )) do echo my_pass | sudo -S /usr/bin/usb-servo set 0 $i done #echo my_pass | sudo -S /u
for do
循环以执行某些应用程序
我有下面的代码,我想运行usb伺服应用程序,鉴于usb伺服的值从190到225,我已经尝试运行代码,但是do的没有给出任何输出,我的伺服没有移动
#! /bin/sh
i=190
sleep 0.4
for (( i=190;i<=225;i++ ))
do
echo my_pass | sudo -S /usr/bin/usb-servo set 0 $i
done
#echo my_pass | sudo -S /usr/bin/usb-servo set 0 195
#echo my_pass | sudo -S /usr/bin/usb-servo set 0 200
#echo my_pass | sudo -S /usr/bin/usb-servo set 0 205
#echo my_pass | sudo -S /usr/bin/usb-servo set 0 210
#echo my_pass | sudo -S /usr/bin/usb-servo set 0 215
#echo my_pass | sudo -S /usr/bin/usb-servo set 0 220
#echo my_pass | sudo -S /usr/bin/usb-servo set 0 225
#/垃圾箱/垃圾箱
i=190
睡眠0.4
对于((i=190;i您的循环看起来不错,但是您也可以使用一个范围进行尝试,看看它是否打印出您想要的内容:
for i in {190..225}; do
echo my_pass | sudo -S /usr/bin/usb-servo set 0 $i
done
如果这和你的循环都没有打印出预期的输出,那么问题不在循环上。可能是你的usb伺服
命令有问题。请只发布相关的代码。你预期的结果是什么?你为什么要回显sudo的密码?把你自己放在/etc/sudoers
中。这就是它的目的。我希望不是这样输出是带i值的伺服运动,我在范围内尝试过,但它给了我伺服运动到0。当你在循环外用硬编码值而不是$i运行命令时,确切的输出是什么?当我在循环外运行时,输出是伺服转子位置的状态,如果我将i更改为值190,那么t是伺服转子位置的精确值。因此,当您运行“echo my|u pass”sudo-S/usr/bin/usb伺服设置0 190时,“190”确实会打印到屏幕上,是吗?是的,它确实会打印到屏幕上。