标签: sh

Git Alias - 多个命令和参数

我正在尝试创建一个使用多个Git命令和位置参数的别名.每个都有Stackoverflow页面,两者都显得非常明显,但我遇到了麻烦.

例如,我想切换到分支foo并执行状态.所以在我看来.gitconfig,我有:

  [alias] 
     chs = !sh -c 'git checkout $0 && git status'
Run Code Online (Sandbox Code Playgroud)

这不起作用.而这样的事情会起作用.

chs = !sh -c 'git checkout $0'

echoes = !sh -c 'echo hi && echo bye'
Run Code Online (Sandbox Code Playgroud)

任何见解将不胜感激.

git alias sh git-alias

170
推荐指数
9
解决办法
6万
查看次数

在while循环内修改的变量不会被记住

在下面的程序中,如果我$foo在第一个if语句中将变量设置为值1 ,那么它的作用就是在if语句之后记住它的值.但是,当我将同一个变量设置ifwhile语句内部的值2时,它在while循环之后就被遗忘了.它的行为就像我$foowhile循环中使用某种变量的副本而我只修改那个特定的副本.这是一个完整的测试程序:

#!/bin/bash

set -e
set -u 
foo=0
bar="hello"  
if [[ "$bar" == "hello" ]]
then
    foo=1
    echo "Setting \$foo to 1: $foo"
fi

echo "Variable \$foo after if statement: $foo"   
lines="first line\nsecond line\nthird line" 
echo -e $lines | while read line
do
    if [[ "$line" == "second line" ]]
    then
    foo=2
    echo "Variable \$foo updated to $foo inside if inside while loop"
    fi
    echo "Value …
Run Code Online (Sandbox Code Playgroud)

bash scope sh while-loop

168
推荐指数
3
解决办法
15万
查看次数

如何限制从grep返回的结果数?

我想说grep最多10行.

我不希望我的电脑努力工作.我希望它在grep找到10个结果后停止.可能吗?

unix linux bash sh

156
推荐指数
3
解决办法
13万
查看次数

使用sh shell比较字符串

我正在使用SH shell,我正在尝试将字符串与变量的值进行比较,但if条件总是执行为true.为什么?

这是一些代码:

Sourcesystem="ABC"

if [ "$Sourcesystem" -eq 'XYZ' ]; then 
    echo "Sourcesystem Matched" 
else
    echo "Sourcesystem is NOT Matched $Sourcesystem"  
fi;

echo Sourcesystem Value is  $Sourcesystem ;
Run Code Online (Sandbox Code Playgroud)

即使这不起作用:

Sourcesystem="ABC"

if [ 'XYZ' -eq "$Sourcesystem" ]; then 
    echo "Sourcesystem Matched" 
else
    echo "Sourcesystem is NOT Matched $Sourcesystem"  
fi;

echo Sourcesystem Value is  $Sourcesystem ;
Run Code Online (Sandbox Code Playgroud)

其次,我们可以将它与NULL或空字符串匹配吗?

unix shell sh

156
推荐指数
6
解决办法
43万
查看次数

$ @在shell脚本中意味着什么?

@在shell脚本中,一个美元符号后跟一个at符号()意味着什么?

例如:

umbrella_corp_options $@
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell sh

155
推荐指数
6
解决办法
17万
查看次数

管道命令输出到tee但也保存命令的退出代码

我有一个shell脚本,我在其中包装一个命令(mvn clean install),将输出重定向到日志文件.

#!/bin/bash
...
mvn clean install $@ | tee $logfile
echo $? # Does not show the return code of mvn clean install
Run Code Online (Sandbox Code Playgroud)

现在,如果mvn clean install失败并出现错误,我希望我的包装器shell脚本也会因该错误而失败.但是因为我将所有输出都传递给tee,所以我无法访问返回代码mvn clean install,所以当我$?之后访问时,它总是0(因为tee成功).

我尝试让命令将错误输出写入单独的文件并在之后检查,但mvn的错误输出始终为空(看起来它只写入stdout).

如何保留返回代码mvn clean install但仍然将输出传递给日志文件?

bash shell pipe sh tee

150
推荐指数
3
解决办法
5万
查看次数

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

有两种方法可以捕获命令行的输出bash:

  1. Legacy Bourne shell反手``:

     var=`command`
    
    Run Code Online (Sandbox Code Playgroud)
  2. $() 语法(据我所知,特定于Bash,或至少不受原始Bourne等非POSIX旧shell支持)

     var=$(command)
    
    Run Code Online (Sandbox Code Playgroud)

与反引号相比,使用第二种语法有什么好处吗?或两者完全相同?

syntax sh backticks

149
推荐指数
8
解决办法
6万
查看次数

使用xargs调用shell函数

我试图使用xargs并行调用更复杂的函数.

#!/bin/bash
echo_var(){
    echo $1
    return 0
}
seq -f "n%04g" 1 100 |xargs -n 1 -P 10 -i echo_var {} 
exit 0
Run Code Online (Sandbox Code Playgroud)

这将返回错误

xargs: echo_var: No such file or directory
Run Code Online (Sandbox Code Playgroud)

关于如何使用xargs来完成此任务或任何其他解决方案的任何想法都将受到欢迎.

bash xargs sh

146
推荐指数
3
解决办法
5万
查看次数

"#!/ bin/sh"行在UNIX shell脚本中的含义是什么?

我正在阅读一些shell脚本教程并找到以下示例程序:

#!/bin/sh
clear
echo "HELLO WORLD"
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我#!/bin/sh在评论中提及' ' 的意义是什么?

unix shell shebang sh

134
推荐指数
4
解决办法
18万
查看次数

在sh shell中找不到source命令

我有一个使用shshell 的脚本.我在使用该source命令的行中出错.它似乎source没有包含在我的shshell中.

如果我明确尝试source从shell 运行我得到:

sh: 1: source: not found
Run Code Online (Sandbox Code Playgroud)

我应该以某种方式安装"源"?我的版本有错sh吗?

bash shell sh

123
推荐指数
7
解决办法
19万
查看次数

标签 统计

sh ×10

bash ×6

shell ×5

unix ×4

linux ×2

alias ×1

backticks ×1

git ×1

git-alias ×1

pipe ×1

scope ×1

shebang ×1

syntax ×1

tee ×1

while-loop ×1

xargs ×1