Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 循环;“为了……做”;关于bashshell_Linux_Bash_Shell_Loops - Fatal编程技术网

Linux 循环;“为了……做”;关于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

如何在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 /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”确实会打印到屏幕上,是吗?是的,它确实会打印到屏幕上。