标签: sh

用于管道heredoc的多行语法; 这便携式吗?

我熟悉这种语法:

cmd1 << EOF | cmd2
text
EOF
Run Code Online (Sandbox Code Playgroud)

但刚刚发现bash允许我写:

cmd1 << EOF |
text
EOF
cmd2
Run Code Online (Sandbox Code Playgroud)

(heredoc用作cmd1的输入,cmd1的输出用于cmd2).这似乎是一个非常奇怪的语法.它是便携式的吗?

bash shell pipe heredoc sh

122
推荐指数
4
解决办法
3万
查看次数

从$ PATH变量中删除冗余路径

我在$ PATH变量中定义了相同的路径6次.

我没有退出检查它是否有效.

如何删除重复项?

$ PATH变量如下所示:

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin
Run Code Online (Sandbox Code Playgroud)

我该怎么把它重置为

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)

linux bash path environment-variables sh

122
推荐指数
5
解决办法
27万
查看次数

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

以下代码有什么问题?

name='$filename | cut -f1 -d'.''
Run Code Online (Sandbox Code Playgroud)

因为,我得到文字字符串$filename | cut -f1 -d'.',但如果我删除引号,我什么都没得到.同时打字

"test.exe" | cut -f1 -d'.'
Run Code Online (Sandbox Code Playgroud)

在shell中给我输出我想要的输出test.我已经知道$filename已经分配了正确的价值.我想要做的是为变量分配没有扩展名的文件名.

bash shell cut sh gnu-coreutils

121
推荐指数
7
解决办法
20万
查看次数

从一个文件中删除另一个文件中的行

我有一个文件f1:

line1
line2
line3
line4
..
..
Run Code Online (Sandbox Code Playgroud)

我想删除另一个文件中的所有行f2:

line2
line8
..
..
Run Code Online (Sandbox Code Playgroud)

我想的东西catsed,这甚至还没有接近我所预期的.我怎样才能做到这一点?

bash scripting sh

117
推荐指数
5
解决办法
7万
查看次数

如何在Windows命令提示符下运行.sh?

如何在Windows 7命令提示符下运行.sh?当我尝试在其中运行此行时,我总是收到此错误,

app/build/build.sh
Run Code Online (Sandbox Code Playgroud)

错误,

'app' is not recognized...
Run Code Online (Sandbox Code Playgroud)

要么,

bash app/build/build.sh
Run Code Online (Sandbox Code Playgroud)

错误,

'bash' is not recognized...
Run Code Online (Sandbox Code Playgroud)

我错过了什么想法?

屏幕抓取, 在此输入图像描述

windows bash command-line sh

112
推荐指数
9
解决办法
53万
查看次数


使用Bash计算字符串中char的出现次数

我需要使用Bash计算字符串中char的出现次数.

在下面的示例中,当char是(例如)时t,它echo正确的tin 的出现次数var,但是当字符是逗号或分号时,它打印出零:

var = "text,text,text,text" 
num = `expr match $var [,]`
echo "$num"
Run Code Online (Sandbox Code Playgroud)

bash shell sh

106
推荐指数
5
解决办法
12万
查看次数

如何在后台运行shell脚本并且不输出任何内容

我写了两个shell脚本a.sh和b.sh. 在a.sh和b.sh中,我有一个无限的for循环,他们将一些输出打印到终端.我想编写另一个调用a.sh和b.sh的脚本,但我希望用户立即重新获得对终端的控制,而不是让脚本无限运行,我想在终端中隐藏输出.

linux scripting sh background-process

101
推荐指数
5
解决办法
29万
查看次数

当我们在美元符号和括号中放入一个命令时,它在shell中意味着什么:$(command)

我只是想了解shell中的以下代码行.它用于获取当前工作目录.我知道$(variable)名称返回变量名称中的值,但$(command)应该返回什么?它在执行命令后返回值吗?在这种情况下,我们可以`用来执行命令.

CWD="$(cd "$(dirname $0)"; pwd)"
Run Code Online (Sandbox Code Playgroud)

在不同版本的shell中也可以从以下代码行获取相同的输出

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
Run Code Online (Sandbox Code Playgroud)

我无法理解的含义$(cd..$(dirname.

有人可以帮我弄清楚这个命令是如何执行的吗?

bash shell terminal ksh sh

97
推荐指数
2
解决办法
5万
查看次数

在Bash或Shell脚本中转​​发函数声明?

例如bash,在C/C++中众所周知的前向声明是否有类似的东西或至少类似的东西(解决方法)?

或者有这样的事情,因为例如它总是一次性执行(一行一行)?

如果没有前向声明,我该怎么做才能使我的脚本更容易阅读.它相当长,这些函数定义在开始时与全局变量混合,使我的脚本看起来很难看,难以阅读/理解)?我要求学习一些这些案例的知名/最佳实践.


例如:

# something like forward declaration
function func

# execution of the function
func

# definition of func
function func
{
    echo 123
}
Run Code Online (Sandbox Code Playgroud)

bash function sh forward-declaration

89
推荐指数
2
解决办法
2万
查看次数