我在路径中的变量值如下
C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;%PYTHON_HOME%\;%PYTHON_HOME%\Scripts;C:\SQLite
Run Code Online (Sandbox Code Playgroud)
当我echo %Path%在命令提示符下键入时,我得到以下输出
PS C:\Users\Arun> echo %Path%
%Path%
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
我使用了以下之一
echo $(stuff)
echo `stuff`
Run Code Online (Sandbox Code Playgroud)
(stuff例如pwd或date或更复杂的东西在哪里)。
然后我被告知这种语法是错误的,一种不好的做法,不优雅,过度,多余,过于复杂,货物崇拜编程,noobish,天真等等。
但是该命令确实有效,那么它到底有什么问题呢?
我怎样才能得到在 bash 脚本中运行的所有命令的标准输出?
即输出必须包含命令输出和命令本身。
我发现
#!/bin/bash -x
Run Code Online (Sandbox Code Playgroud)
但这并不完全相同,因为不是
mysql -v dbname < dump.sql | grep "CREATE TABLE"
Run Code Online (Sandbox Code Playgroud)
表明
+ mysql -v dbname
+ grep 'CREATE TABLE'
Run Code Online (Sandbox Code Playgroud) 我想在 shell 脚本中的变量之间将新行回显到文件中。这是我的代码:
var1="你好" var2="世界!" logwrite="$var1 [这里是我想插入新行的地方] $var2 echo "$logwrite" >> /Users/username/Desktop/user.txt
现在,当我运行我的脚本时,文件 user.txt 显示:
你好,世界!
我希望它显示:
你好 世界!
我该怎么做呢??
编辑:这是我的 shell 脚本:
echo -n “你叫什么名字?” 先读 echo -n "你姓什么?" 最后阅读 echo -n “你的中间名是什么?” 读中间 echo -n “你的生日是几号?” 读生日 echo -e "名字: $first /nLast Name: $last /nMiddle Name: $middle /nBirthday: $birthday" >> /Users/matthewdavies/Desktop/user.txt qlmanage -p "~/Desktop/user.txt"
我需要在名为 command.bat 的批处理脚本中回显像这样的命令用法
command.bat on|off
Run Code Online (Sandbox Code Playgroud)
我不能用
echo %0 on|off
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用
echo "%0 on|off"
Run Code Online (Sandbox Code Playgroud)
但它把引号放在一起
有没有其他办法?
我是计算世界的新手。在安装 ROS Indigo 时,第一步指导我使用以下代码:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
Run Code Online (Sandbox Code Playgroud)
为什么我们在这种情况下使用该echo命令sh -c?我也看到过在其他安装过程中使用 echo 命令。
有时,当脚本在密码提示下被杀死时,我再也看不到我的输入在终端中被回显了。也就是说,通常在终端上,我看到的是:
$ _
<after typing 'foobar':>
$ foobar_
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我看不到我输入的内容。
我知道我可以重新启动终端以恢复其常规设置,但是有没有办法在不重新启动的情况下恢复输入回声?
有人能解释一下 Linux shell 中字符转义的幕后情况吗?我尝试了以下方法并在谷歌上搜索了很多,但没有成功理解正在发生的事情(以及如何发生):
root@sv01:~# echo -e "\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\\\ Hello!"
\\\ Hello!
root@sv01:~# echo -e "\n Hello!"
Hello!
root@sv01:~# echo -e "\\n Hello!"
Hello!
root@sv01:~# …Run Code Online (Sandbox Code Playgroud) 我hexdump像这样转储一个字符串2031 3334 2e30 0a32 2032 3331 302e 000a。很明显,这0x0a是换行符,但是,当我尝试回显这个字符串时,我总是得到1 430.2 2 13.0- 新行被替换为空格,即使我使用了-e标志。
可能是什么问题?尾矿会\0破坏输出吗?有没有其他方法可以打印0x0a新行?
谢谢和最好的问候。
当我写:
file file1.txt
Run Code Online (Sandbox Code Playgroud)
我有这个输出:Little-endian UTF-16 Unicode text, with CR line terminators
然后如果我写:
file file2.txt
Run Code Online (Sandbox Code Playgroud)
我有: ASCII 文本
file2.txt 是通过以下方式创建的:
echo $var > "file2.txt"
Run Code Online (Sandbox Code Playgroud)
我希望 file2.txt 与 file1.txt 具有相同的编码。我怎样才能做到这一点 ?
echo ×10
bash ×5
linux ×3
shell-script ×3
command-line ×2
shell ×2
batch-file ×1
encoding ×1
escaping ×1
newlines ×1
path ×1
pipe ×1
sh ×1
stty ×1
terminal ×1
ubuntu ×1
windows-10 ×1