Tag: bash

如何将进度条添加到shell脚本?

当在* NIX中的bash或任何其他shell中编写脚本时,如果运行一个需要几秒钟的命令,则需要一个进度条。 例如,复制一个大文件,打开一个大的tar文件。 你build议如何将进度条添加到shell脚本中?

如何判断Bash中是否存在常规文件?

我已经使用以下脚本来查看文件是否存在: #!/bin/bash FILE=$1 if [ -f $FILE ]; then echo "File $FILE exists." else echo "File $FILE does not exist." fi 如果我只想检查文件是否存在,那么正确的语法是什么? #!/bin/bash FILE=$1 if [ $FILE does not exist ]; then echo "File $FILE does not exist." fi

如何在bash中使用浮点除法?

我试图在Bash脚本中划分两个图像宽度,但是bash给了我0的结果: RESULT=$(($IMG_WIDTH/$IMG2_WIDTH)) 我没有学习Bash指南,我知道我应该使用bc ,在互联网的所有例子中,他们使用bc 。 在echo我试图把我的SCALE相同的东西,但它没有奏效。 这里是我在教程中find的例子: echo "scale=2; ${userinput}" | bc 我怎样才能让Bash给我一个像0.5这样的float?

用bash设置一个参数

我经常运行一个简单的bash命令: rpm -Uvh –define "_transaction_color 3" myPackage.rpm 哪个工作正常。 但是现在我试图把它编写成一个bash文件,并且使它更加灵活: #!/bin/bash INSTALL_CMD=rpm INSTALL_OPT="-Uvh –define '_transaction_color 3'" ${INSTALL_CMD} ${INSTALL_OPT} myPackage.rpm 但是,这不断产生错误: error: Macro % has illegal name (%define) 错误来自于如何处理–define和引用的_transaction_color 。 我已经尝试了各种各样的转义,不同的措辞,甚至使INSTALL_OPT数组,处理${INSTALL_OPT[@]} 。 到目前为止,我的尝试没有奏效。 显然,我想要的是非常简单的。 我只是不知道如何完成它。 我怎样才能让bash正确处理我的–define参数?

在Bash中将string转换为小写

有没有在bash中将string转换为小写string的方法? 例如,如果我有: a="Hi all" 我想将其转换为: "hi all"

在bash shell脚本的命令中扩展单引号内的variables

我想从一个bash shell脚本中运行一个命令,在单引号和一个variables中包含单引号和其他一些命令。 例如repo forall -c '….$variable' 在这种格式下,$被转义并且variables不被扩展。 我尝试了以下变化,但他们被拒绝了: repo forall -c '…."$variable" ' repo forall -c " '….$variable' " " repo forall -c '….$variable' " repo forall -c "'" ….$variable "'" 如果我用这个值代替variables,那么命令执行得很好。 请告诉我我哪里错了

在Bash中,]优于吗?

一位同事最近在一篇代码审查中声称, [[ ]]结构在结构中比[ ]要优先 if [ "`id -nu`" = "$someuser" ] ; then echo "I love you madly, $someuser" fi 他无法提供一个理由。 有一个吗?

如何“grep”连续的stream?

有可能使用连续stream的grep ? 我的意思是一个tail -f <file>命令,但输出为了保留只有我感兴趣的线的grep 。 我试过tail -f <file> | grep pattern tail -f <file> | grep pattern但似乎grep只能执行一次tail完成,也就是说永远不会。

“猫”EOF“如何在bash中工作?

我需要编写一个脚本来input一个程序( psql )的多行input。 经过一番search后,我发现下面的语法工作: cat << EOF | psql —params BEGIN; `pg_dump —-something` update table …. statement …; END; EOF 这正确地构造了多行string(从BEGIN;到END; ,包括在内)并将其作为psql的input。 但我不知道如何/为什么它的工作,请解释一下吗? 我主要是指cat << EOF ,我知道>输出到一个文件, >>附加到一个文件, <从文件读取input。 <<究竟是做什么的? 有没有一个人的网页?

如何在使用pipe道使用“tee”时将stderr写入文件?

我有一个命令,它会将aaa.sh的输出打印到屏幕上,同时将stdout写入bbb.out ; 不过,我也想写一个名为ccc.out的文件stderr 。 任何build议如何修改下面的一块? ./aaa.sh | tee ./bbb.out 更新:无论如何, stdout和stderr都应该被打印到屏幕上。