Questions tagged «control-flow»

控制流是指程序或脚本运行时计算机代码执行的顺序。示例包括循环(重复代码)和条件语句,其中一个分支而不是另一个分支在运行。使用此标记可解决有关脚本或程序中控制流的问题,而不是有关终端流控制的问题。


3
Shell的控制和重定向运算符是什么?
我经常在网上看到教程,这些教程将各种命令与不同的符号相连。例如: command1 | command2 command1 & command2 command1 || command2 command1 && command2 其他人似乎正在将命令连接到文件: command1 > file1 command1 >> file1 这些是什么东西?他们叫什么?他们在做什么?还有更多吗? 有关此问题的元线程。。

6
混淆&&和||的使用 经营者
我浏览了一个/etc/rc.d/init.d/sendmail文件(我知道这几乎没用过,但是我正在学习考试),并且对&&和||操作符有些困惑。我已经阅读了可以在诸如以下语句中使用它们的地方: if [ test1 ] && [ test2 ]; then echo "both tests are true" elif [ test1 ] || [ test2 ]; then echo "one test is true" fi 但是,此脚本显示单行语句,例如: [ -z "$SMQUEUE" ] && SMQUEUE="QUEUE" [ -f /usr/sbin/sendmail ] || exit 0 这些似乎正在使用&&and ||运算符基于测试得出响应,但是我无法从这些运算符的这种特殊用法中提取文档。谁能解释在特定情况下这些工具的作用?

7
按空格键继续
在用户按下之前,如何停止bash脚本Space? 我想在脚本中提出问题 按空格键继续,或按CTRL+ C退出 然后脚本应停止并等待,直到按空格键为止。

2
如何遍历文件行?
说我有这个文件: hello world hello world 这个程序 #!/bin/bash for i in $(cat $1); do echo "tester: $i" done 输出 tester: hello tester: world tester: hello tester: world 我想让for每行的迭代分别忽略空白,即最后两行应替换为 tester: hello world 使用引号会for i in "$(cat $1)";导致i一次分配整个文件。我应该改变什么?

3
测试字符串是否包含子字符串
我有代码 file="JetConst_reco_allconst_4j2t.png" if [[ $file == *_gen_* ]]; then echo "True" else echo "False" fi 我测试是否file包含“ gen”。输出为“ False”。真好! 问题是当我用变量替换“ gen”时testseq: file="JetConst_reco_allconst_4j2t.png" testseq="gen" if [[ $file == *_$testseq_* ]]; then echo "True" else echo "False" fi 现在输出为“ True”。怎么会这样?如何解决问题?



2
Bash的“ for”循环中没有“ in foo bar ...”部分
最近,我正在查看一些使我感到困惑的代码,因为它可以正常工作,而且我没想到会这样。该代码简化为该示例 #!/bin/bash for var; do echo "$var" done 使用命令行参数运行时将其打印出来 $ ./test a b c a b c 正是这一点,(对我而言)是意料之外的。为什么var未定义就不会导致错误?使用这种做法是否被认为是“好的做法”?

3
并行循环浏览两个文件的行
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 5年前关闭。 我正在编写的脚本的目的是比较两个系列的文件。文件名本身存储在两个单独的文件中,每行一个路径。我的想法是有两个while read循环,每个文件名列表一个,但是如何将两个循环混在一起? while read compareFile <&3; do if [[ ! $server =~ [^[:space:]] ]] ; then #empty line exception continue fi echo "Comparing file - $compareFile" if diff "$compareFile" _(other file from loop?_) >/dev/null ; then echo Same else echo Different fi done …


2
通过“如果”将任务发送到后台
为什么是这样? if true; then sleep 3 &; fi bash: syntax error near unexpected token `;' 我要跑步 sleep 3 在后台运行,以便命令[“ sleep 3”仅作为示例]将以“ paralell”样式运行,因此完成速度更快。但是我得到这个: bash: syntax error near unexpected token `;' 错误信息。为什么?为什么我不能将任务发送到后台?

2
逐行读取文件时请求用户输入
对于班级,我需要编写一个Bash脚本,该脚本将获取输出ispell,当我尝试在while循环内请求用户输入时,它仅将文件的下一行保存为用户输入。 我该如何在while循环中请求用户输入? #!/bin/bash #Returns the misspelled words #ispell -l < file #define vars ISPELL_OUTPUT_FILE="output.tmp"; INPUT_FILE=$1 ispell -l < $INPUT_FILE > $ISPELL_OUTPUT_FILE; #echo a new line for give space between command #and the output generated echo ""; while read line; do echo "'$line' is misspelled. Press "Enter" to keep"; read -p …


1
运行2 while循环的最有效方法
当前,我使用两个不同的while循环来启动窗口管理器dwm,并在其上显示系统信息。 目前,我的解决方案是在同一脚本中连续运行它们,如下所示: while true; do $HOME/Scripts/dwm-status sleep 2s done & while true; do dwm >/dev/null done 我还看到它像嵌套while循环一样运行: while true; do while true; do $HOME/Scripts/dwm-status sleep 2s done & dwm >/dev/null done 第二个似乎导致CPU峰值。就效率(最少调用资源等)而言,运行这两个循环的最佳方法是什么?为什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.