sh相关内容

如何在不回显的情况下从 shell 脚本获取密码

我有一个脚本可以自动执行需要访问密码保护系统的过程.该系统通过接受用户密码作为参数的命令行程序进行访问. 我想提示用户输入他们的密码,将其分配给一个 shell 变量,然后使用该变量来构建访问程序的命令行(这当然会产生我将处理的流输出). 我是 Bourne/Bash 中相当称职的 shell 程序员,但我不知道如何接受用户输入而不让它回显到终端(或者可能使用“*"字符回显). ..
发布时间:2021-12-05 23:01:40 其他开发

如何在执行 shell 命令时回显它们

在 shell 脚本中,如何回显所有调用的 shell 命令并扩展任何变量名称? 例如,给定以下行: ls $DIRNAME 我希望脚本运行命令并显示以下内容 ls/full/path/to/some/dir 目的是保存所有调用的 shell 命令及其参数的日志.也许有更好的方法来生成这样的日志? 解决方案 set -x or set -o xtrace 展开变量并在行前打印 ..
发布时间:2021-12-05 22:49:21 其他开发

Ubuntu 说“bash: ./program Permission denied"

我在计算机 1 和计算机 2 上运行 Ubuntu.我在计算机 1 上编译了一个 C++ 程序,我可以使用 ./program_name 从终端执行它.它运行良好. 但是,当我尝试在计算机 2 上执行此操作时,它显示:bash: ./program_name: permission denied 出了什么问题,我该怎么办? 解决方案 chmod u+x program_name ..
发布时间:2021-12-05 22:45:20 其他开发

如何在 shell 脚本中删除文件名的扩展名?

下面的代码有什么问题? name='$文件名 |cut -f1 -d'.'' 按原样,我得到文字字符串 $filename |cut -f1 -d'.',但是如果我删除引号,我将一无所获.同时,输入 "test.exe" |cut -f1 -d'.' 在 shell 中给我我想要的输出,test.我已经知道 $filename 已分配正确的值.我想要做的是将没有扩展名的文件名分配给一个变量 ..
发布时间:2021-12-05 22:43:17 其他开发

(=) 符号后有空格的变量赋值?

在 Bash 中,为变量赋值是使用 T=content 完成的,等号前后没有空格. 尽管我在 shell 脚本 PWD=/bin/pwd 中看到了以下内容,在等号的右侧包含一个空格. 它有一个空间的目的是什么? 解决方案 在例子PWD=/bin/pwd中,变量PWD被设置为空字符串在执行命令 /bin/pwd 之前.更改仅对该行生效. 这对于出于运行命令的目的对变量进行临 ..
发布时间:2021-12-05 22:41:34 其他开发

如何在 shell 脚本中声明和使用布尔变量?

我尝试使用以下语法在 shell 脚本中声明一个布尔变量: 变量=$false变量=$真 这是正确的吗?另外,如果我想更新该变量,我会使用相同的语法吗?最后,以下使用布尔变量作为表达式的语法是否正确? if [ $variable ]如果 [ !$variable ] 解决方案 Revised Answer (Feb 12, 2014) the_world_is_flat=true# ..
发布时间:2021-12-05 22:38:08 其他开发

当相同的代码在其他地方工作时,为什么 shell 脚本会给出语法错误?

我有一个从工作脚本复制的简单 shell 脚本.如果我将其复制粘贴到终端,它会起作用: 如果为真然后真的菲 但是,当我使用 bash myscript 运行脚本时,我收到各种语法错误,好像缺少某些关键字一样. myscript:第 4 行:意外标记“fi"附近的语法错误,就好像 then 不存在一样. myscript:第 6 行:语法错误:文件意外结束,就好像 fi 不存在一样. ..
发布时间:2021-12-05 22:36:36 其他开发

在 shell 脚本中使用 $() 而不是反引号有什么好处?

bash中有两种捕获命令行输出的方法: 旧版 Bourne shell 反引号 ``: var=`command` $() 语法(据我所知是 Bash 特定的,或者至少不受像原始 Bourne 这样的非 POSIX 旧 shell 的支持) var=$(command) 与反引号相比,使用第二种语法有什么好处吗?还是两者完全 100% 等价? 解决方案 主要的是能够嵌套它们, ..
发布时间:2021-12-05 22:22:01 其他开发

从字符串中正确读取引用/转义参数

我在向 Bash 脚本中的命令传递参数时遇到问题. poc.sh: #!/bin/bashARGS='“你好"测试'./swap ${ARGS} 交换: #!/bin/sh回声“${2}"“${1}" 当前输出为: 那里" "你好 仅更改 poc.sh(因为我相信交换可以正确执行我想要的操作),如何让 poc.sh 传递“hi there"并作为两个参数进行测试,“hi ther ..
发布时间:2021-12-05 22:15:56 其他开发

为什么要测试“$?"?查看命令是否成功,反模式?

我看到 这里 测试是否 $?是零(成功)还是其他(失败)是一种反模式,但我在其他任何地方都找不到. 坚持维基百科的反模式定义:“一个反模式模式(或反模式)是对反复出现的问题的常见反应,通常是无效的,并且有可能适得其反."为什么这是一种反模式? 解决方案 这是一种反模式,因为它引入了复杂性,如果您根本不需要记录退出状态就不会存在. if your_command;然后 ... 出错 ..
发布时间:2021-12-05 22:15:11 其他开发

shell 编程中的 $(command) 和 `command` 有什么区别?

要将命令的输出作为变量存储在 sh/ksh/bash 中,您可以执行以下任一操作 var=$(command) 或 var=`command` 这两种方法有什么区别? 解决方案 反引号/墓碑已被弃用,取而代之的是 $() 用于命令替换,因为 $() 可以像 $(echo foo$(echo bar)) 一样轻松地嵌套在自身中.还有其他差异,例如反斜杠在反引号/gravemark 版 ..
发布时间:2021-12-05 22:14:40 其他开发

为什么正确的 shell 脚本会给出包装/截断/损坏的错误消息?

我有一个带有命令的 shell 脚本,看起来它应该可以工作,但它失败了,并显示奇怪的包装/截断/损坏的错误消息.示例: $ ls -l myfile-rw-r----- 1 me me 0 Aug 7 12:36 myfile$猫我的脚本ls -l 我的文件$ bash 脚本: 无此文件或目录 该文件显然存在,但即使我不存在,这也是我通常会收到的那种错误消息: $ ls -l idontex ..
发布时间:2021-12-05 22:12:49 其他开发

将命令作为输入传递给另一个命令(su、ssh、sh 等)

我有一个脚本,我需要在其中启动一个命令,然后将一些附加命令作为命令传递给该命令.我试过了 suecho 我现在应该是 root:我是谁出口回声完成. ...但它不起作用:su 成功,但是命令提示符只是盯着我看.如果我在提示符下输入 exit,echo 和 who am i 等开始执行!并且 echo done. 根本没有被执行. 同样地,我需要让它通过 ssh 工作: ssh 远程主机 ..
发布时间:2021-12-05 22:11:05 服务器开发

不记得在 while 循环中修改的变量

在下面的程序中,如果我在第一个 if 语句中将变量 $foo 设置为值 1,它的工作原理是它的值在之后被记住if 语句.但是,当我在 while 语句内的 if 中将相同的变量设置为值 2 时,它会在 while 循环之后被遗忘.它的行为就像我在 while 循环中使用了变量 $foo 的某种副本,而我只修改了那个特定的副本.这是一个完整的测试程序: #!/bin/bash设置 -e设置 -u富 ..
发布时间:2021-12-05 22:09:05 其他开发

sh 和 Bash 的区别

在编写shell程序时,我们经常使用/bin/sh和/bin/bash.我通常使用bash,但我不知道它们之间有什么区别. Bash 和 sh 的主要区别是什么? 使用 Bash 和 sh 编程时需要注意什么? 解决方案 sh 是什么? sh(或 Shell 命令语言)是一种由 POSIX 标准.它有许多实现(ksh88、Dash,……).Bash 也可以被认为是 sh ..
发布时间:2021-12-05 22:07:23 服务器开发

在 Bash 变量赋值中找不到命令错误

我有一个名为 test.sh 的脚本: #!/bin/bashSTR = "你好世界"回声$STR 当我运行 sh test.sh 我得到这个: test.sh: line 2: STR: command not found 我做错了什么?我在网上查看非常基本/初学者的 bash 脚本教程,这就是他们所说的声明变量的方式......所以我不确定我做错了什么. 我使用的是 Ubuntu ..
发布时间:2021-12-05 22:07:15 其他开发

我刚刚分配了一个变量,但 echo $variable 显示了其他内容

以下是一系列情况,其中 echo $var 可以显示与刚刚分配的值不同的值.无论分配的值是“双引号"、“单引号"还是不带引号,都会发生这种情况. 如何让 shell 正确设置我的变量? 星号 预期的输出是 /* Foobar is free software */,但我得到了一个文件名列表: $ var="/* Foobar 是免费软件 */"$回声 $var/bin/boot ..
发布时间:2021-12-05 22:06:50 其他开发

shell 脚本对编码和行尾敏感吗?

我正在 Mac 上制作 NW.js 应用程序,并希望通过双击图标在开发模式下运行该应用程序.第一步,我试图让我的 shell 脚本工作. 在 Windows 上使用 VSCode(我想争取时间),我在项目的根目录下创建了一个 run-nw 文件,其中包含: #!/bin/bashcd "src"安装光盘.../tools/nwjs-sdk-v0.17.3-osx-x64/nwjs.app/ ..
发布时间:2021-12-05 22:06:43 其他开发