【问题标题】:Use of \c in shell scripting在 shell 脚本中使用 \c
【发布时间】:2010-11-16 04:10:09
【问题描述】:

我正在编辑其他人的脚本,我看到他/她经常使用这个\c

echo "bla bla \c"

使用时会简单地打印出来

bla bla \c

在屏幕上。

所以,我想知道为什么要使用它,或者我可能遗漏了什么,因为它什么也没做?我检查了转义字符,也没有找到任何这样的东西。在 shell 脚本中,主要是在 bash 和 korn shell 中是否有 \c 的特殊用途?

【问题讨论】:

标签: linux bash shell scripting


【解决方案1】:

\c 使光标在回显结束后保持在同一行,但要启用它,您需要 -e 标志:

echo -e "bla bla \c"

【讨论】:

    【解决方案2】:

    我认为尝试是在没有新行的情况下终止 echo。

    如果在你的系统上不起作用,你可以这样替换,

    echo "test \c"; echo " same line"
    

    可以成为,

    echo -n "test"; echo " same line"
    

    一个更简单的更改将是(如Neil 建议的那样,+1 那里),

    echo -e "test \c"; echo " same line"
    

    【讨论】:

    • 使用 printf 比 echo -n 更便携。
    • @William,我完全同意。但是,当您移植脚本时,像 -e-n 这样的小技巧会更快。
    【解决方案3】:

    POSIX 声明:

    \c 禁止输出中最后一个参数后面的 。 '\c' 后面的所有字符 参数应被忽略。

    基本上,符合 POSIX XSI 的 echo 实用程序应在找到 \c 时退出,从以下命令可以看出:

    echo -e "foo bar \c baz" "quux"
    

    【讨论】:

      【解决方案4】:

      没有自动换行,apparently:

      在 UNIX Shell 中使用

      UNIX Korn shell 使用 \c 转义字符来表示继续(不自动换行):

      echo "输入数据文件的路径:\c"

      【讨论】:

        【解决方案5】:

        名称 echo - 显示一行文本

        概要 回声 [SHORT-OPTION]... [字符串]... echo 长选项

        描述 将字符串回显到标准输出。

           -n     do not output the trailing newline
        
           -e     enable interpretation of backslash escapes
        
           -E     disable interpretation of backslash escapes (default)
        
           --help display this help and exit
        
           --version
        

        【讨论】:

          【解决方案6】:

          事实上,'echo' 的行为取决于所使用的 shell。
          使用简单的 Bourne shell,'\c' 将被默认解释(因此光标保持在行上)。
          使用 Bash,默认情况下不会解释它(因此会显示字符串 '\c'),因此您必须添加 '-e' 选项才能启用它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-16
            • 1970-01-01
            • 2023-03-07
            • 2018-02-27
            • 1970-01-01
            • 2011-12-05
            • 1970-01-01
            相关资源
            最近更新 更多