标签: sh

sh和bash之间的区别

在编写shell程序时,我们经常使用/bin/sh/bin/bash.我经常使用bash,但我不知道它们之间有什么区别.

bash和之间的主要区别是sh什么?

我们究竟需要意识到在编程时bashsh

unix bash shell sh

1194
推荐指数
11
解决办法
46万
查看次数

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

我尝试使用以下语法在shell脚本中声明一个布尔变量:

variable=$false

variable=$true
Run Code Online (Sandbox Code Playgroud)

它是否正确?另外,如果我想更新该变量,我会使用相同的语法吗?最后,使用布尔变量作为正确的表达式是以下语法:

if [ $variable ]

if [ !$variable ]
Run Code Online (Sandbox Code Playgroud)

bash shell scripting boolean sh

884
推荐指数
14
解决办法
84万
查看次数

如何执行shell命令?

在shell脚本中,如何回显所有调用的shell命令并展开任何变量名?例如,给定以下行:

ls $DIRNAME
Run Code Online (Sandbox Code Playgroud)

我希望脚本运行该命令并显示以下内容

ls /full/path/to/some/dir
Run Code Online (Sandbox Code Playgroud)

目的是保存所有调用的shell命令及其参数的日志.也许有更好的方法来生成这样的日志?

bash shell trace posix sh

812
推荐指数
11
解决办法
66万
查看次数

set -e在bash脚本中的含义是什么?

我正在研究脚本在从Debian存档(.deb)文件解压缩该包之前执行的这个preinst文件的内容.

该脚本具有以下代码:

#!/bin/bash
set -e
# Automatically added by dh_installinit
if [ "$1" = install ]; then
   if [ -d /usr/share/MyApplicationName ]; then
     echo "MyApplicationName is just installed"
     return 1
   fi
   rm -Rf $HOME/.config/nautilus-actions/nautilus-actions.conf
   rm -Rf $HOME/.local/share/file-manager/actions/*
fi
# End automatically added section
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是关于这一行:

set -e
Run Code Online (Sandbox Code Playgroud)

我认为脚本的其余部分非常简单:它检查Debian/Ubuntu包管理器是否正在执行安装操作.如果是,它会检查我的应用程序是否刚刚安装在系统上.如果有,脚本将打印消息"MyApplicationName刚刚安装"并结束(return 1意味着以"错误"结束,不是吗?).

如果用户要求Debian/Ubuntu软件包系统安装我的软件包,该脚本还会删除两个目录.

这是对的还是我错过了什么?

linux bash shell sh

617
推荐指数
9
解决办法
34万
查看次数

如何在Shell Scripting中执行逻辑OR操作

我正在尝试进行简单的条件检查,但它似乎不起作用.

如果$#等于0或大于1那么打个招呼.

我尝试了以下语法但没有成功:

if [ "$#" == 0 -o "$#" > 1 ] ; then
 echo "hello"
fi

if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
 echo "hello"
fi
Run Code Online (Sandbox Code Playgroud)

unix bash if-statement sh

554
推荐指数
7
解决办法
91万
查看次数

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

我有一个名为test.sh的脚本:

#!/bin/bash
STR = "Hello World"
echo $STR
Run Code Online (Sandbox Code Playgroud)

我跑的时候sh test.sh得到这个:

test.sh: line 2: STR: command not found
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我在网上看一下非常基础/初学者的bash脚本教程,这就是他们说声明变量的方式......所以我不确定我做错了什么.

我在Ubuntu Server 9.10上.是的,bash位于/bin/bash.

syntax bash shell sh variable-assignment

493
推荐指数
5
解决办法
32万
查看次数

在shell脚本中没有换行符的'echo'

echo我的脚本中有问题:

echo -n "Some string..."
Run Code Online (Sandbox Code Playgroud)

版画

-n Some string...
Run Code Online (Sandbox Code Playgroud)

并移动到下一行.在控制台中,它正确地工作而没有换行:

Some string...
Run Code Online (Sandbox Code Playgroud)

shell command-line sh

486
推荐指数
4
解决办法
51万
查看次数

如何将文件读入shell中的变量?

我想读取一个文件并将其保存在变量中,但我需要保留变量而不是打印出文件.我怎样才能做到这一点?我写过这个剧本,但它不是我需要的:

#!/bin/sh
while read LINE  
do  
  echo $LINE  
done <$1  
echo 11111-----------  
echo $LINE  
Run Code Online (Sandbox Code Playgroud)

在我的脚本中,我可以将文件名作为参数,因此,如果文件包含"aaaa",例如,它会打印出来:

aaaa
11111-----
Run Code Online (Sandbox Code Playgroud)

但这只是将文件打印到屏幕上,我想将其保存到变量中!是否有捷径可寻?

unix shell sh

424
推荐指数
6
解决办法
83万
查看次数

如何从shell脚本获取密码而不进行回显

我有一个脚本可以自动执行需要访问受密码保护的系统的进程.通过命令行程序访问系统,该程序接受用户密码作为参数.

我想提示用户键入他们的密码,将其分配给shell变量,然后使用该变量构建访问程序的命令行(这当然会产生我将处理的流输出).

我是Bourne/Bash中一个相当称职的shell程序员,但我不知道如何接受用户输入而不让它回显到终端(或者可能使用'*'字符回显).

有人能帮忙吗?

bash shell scripting sh

384
推荐指数
8
解决办法
32万
查看次数

如何通过shell脚本执行mongo命令?

我想在shell脚本中执行mongo命令.

我尝试了以下方式test.sh

#!/bin/sh
mongo myDbName
db.mycollection.findOne()
show collections
Run Code Online (Sandbox Code Playgroud)

当我执行上面的脚本./test.sh

然后建立了mongo连接,但未执行下一个命令

如何通过sh脚本[test.sh]执行其他命令?

请帮我

bash shell sh mongodb

375
推荐指数
15
解决办法
32万
查看次数