相关疑难解决方法(0)

如何执行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万
查看次数

如何比较Bash中'if'语句中的两个字符串变量?

我正在尝试使用Bash(使用Ubuntu)获得一个if声明:

#!/bin/bash

s1="hi"
s2="hi"

if ["$s1" == "$s2"]
then
  echo match
fi
Run Code Online (Sandbox Code Playgroud)

我尝试了各种形式的if语句,使用[["$s1" == "$s2"]],有和没有引号,使用=,==-eq,但我仍然得到以下错误:

[hi:命令未找到

我查看了各种网站和教程并复制了这些内容,但是它不起作用 - 我做错了什么?

最后,我想说是否$s1包含$s2,所以我该怎么做?

我刚刚解决了空位...:/我怎么说包含?

我试过了

if [[ "$s1" == "*$s2*" ]]
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

bash scripting if-statement

572
推荐指数
11
解决办法
102万
查看次数

'<'运算符保留供将来使用

我正在使用PowerShell并尝试运行以下命令:

.\test_cfdp.exe < test.full | tee test.log
Run Code Online (Sandbox Code Playgroud)

test.full是一个模拟test_cfdp.exe命令行输入的脚本.但是,我收到以下错误:

The '<' operator is reserved for future use.
Run Code Online (Sandbox Code Playgroud)

有没有其他方法(即cmdlet)我可以用来使这个命令在PowerShell中工作?

powershell redirect io-redirection

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

在新shell中运行bash命令并在执行此命令后保留在新shell中

我有一个问题.我正在寻找这个答案很长时间 - 如何在新的bash shell中运行命令并在执行此命令后保留在这个新的shell中.例如:

bash -c "export PS1='> ' && ls"
Run Code Online (Sandbox Code Playgroud)

将使新的shell,导出PS1,列表目录和...将退出到我当前的shell.我想留在新的.

bash shell command

31
推荐指数
1
解决办法
1万
查看次数

命令里面的if语句的bash脚本

我有以下行作为更大的bash脚本的一部分:

if [ `packages/TinySVM-0.09/bin/svm_learn 2>&1| grep TinySVM | wc -l | cut -c0-7 | sed 's/^  *//g'` -eq 1 ] 
Run Code Online (Sandbox Code Playgroud)

在运行脚本时,我得到:

./install.sh:219行:[: - eq:一元运算符预期

其中219行是上面的行.有什么修复建议吗?

bash conditional if-statement syntax-error

21
推荐指数
5
解决办法
6万
查看次数

如何在BASH脚本中的新终端中启动命令

我的bash脚本读入一些变量,然后在我的家庭网络上运行airodump.我想保持窗口与airodump运行并打开一些新的终端运行其他命令进行网络发现,同时airodump屏幕打开(所以我可以看到结果).
现在我看起来像这样(编辑简洁):

#!/bin/bash
read -p "Enter the channel: $channel"
airomon-ng start wlan0 $channel,$channel
airodump-ng -c $channel,$channel mon0 &&
terminator -e netstat -ax &&
terminator -e nmap 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

使用整个终端(airodump)的第一个命令启动正常,我可以看到网络,但它只是停留在该屏幕上.如果我按ctrl + c然后它返回提示但我可以看到错误:用法:终结者[选项]错误没有这样的选项
我希望netstat和nmap命令出现并保留在他们自己的终端窗口,我该怎么做?

bash

14
推荐指数
1
解决办法
3万
查看次数

如何在shell脚本中保留$ @中的双引号?

假设我有一个非常简单的shell脚本'foo':

  #!/bin/sh
  echo $@
Run Code Online (Sandbox Code Playgroud)

如果我像这样调用它:

  foo 1 2 3
Run Code Online (Sandbox Code Playgroud)

它愉快地打印:

  1 2 3
Run Code Online (Sandbox Code Playgroud)

但是,假设我的一个参数是双引号括起来并包含空格:

  foo 1 "this arg has whitespace" 3
Run Code Online (Sandbox Code Playgroud)

foo愉快地打印:

  1 this arg has whitespace 3
Run Code Online (Sandbox Code Playgroud)

双引号被剥夺了!我知道shell认为它帮我一个忙,但是...我想得到原始版本的论点,不受shell解释的影响.有没有办法这样做?

shell

11
推荐指数
4
解决办法
6846
查看次数

VSCode:每个终端打开后如何运行命令?

在Windows上,我必须在start-ssh-agent.cmd打开的每个新终端会话上运行命令。我的开发环境是VSCode,每天我都会打开十几个新终端。每个终端打开后,我必须手动运行此命令。

每次打开一个终端时,是否可以在终端上运行此命令?

在此处输入图片说明

这可以采用VSCode扩展名,VSCode配置(设置)或Windows环境配置的形式。

任何的想法?

visual-studio-code vscode-extensions vscode-settings vscode-tasks

5
推荐指数
4
解决办法
3981
查看次数

让bash在启动后立即运行命令然后继续在此会话中?

我需要在bash启动后立即运行命令,然后保持在会话中.我期待类似的东西可以工作bash && cd ~/Work,但是,显然,它会在初始会话中运行第二个命令,而不是我正在开始的那个.

在新shell中发现了这个运行bash命令,并在此命令执行线程后保留在新shell中,但运行bash --rcfile对我不起作用,因为我仍然需要加载rcfile.

bash

4
推荐指数
1
解决办法
924
查看次数

在 gnome-terminal -x 中运行 bash 函数

我有一个 bash 函数,我想使用 gnome 终端在新窗口中执行该函数。我该怎么做?我想在我的 blah.sh 脚本中做这样的事情:

    my_func() {
        // Do cool stuff
    }

    gnome-terminal -x my_func
Run Code Online (Sandbox Code Playgroud)

我现在正在做的是将 my_func() 放入脚本并调用 gnome-terminal -x ./my_func

linux bash shell gnome-terminal

4
推荐指数
1
解决办法
2764
查看次数

如何从另一个控制台中的另一个脚本运行 bash 脚本?

我在 Windows 10 上使用 Ubuntu。

我的脚本 (SendTrends.sh) 一直运行,但有时我需要运行另一个脚本 (Historical+.sh),而不停止 SendTrends.sh。对我来说最好的选择是 Historical+.sh 将在另一个控制台中弹出,并在其工作后关闭该控制台。但如果它能正常工作,我会对单个控制台中的解决方案感到满意。我怎样才能做到这一点?

感谢您的任何帮助。

bash

3
推荐指数
1
解决办法
3256
查看次数

Docker 运行 bash --init-file

我正在尝试创建一个别名来帮助调试我的 docker 容器。

我发现 bash接受一个--init-file选项,该选项应该让我们在进入交互模式之前运行一些命令。

所以我想我可以做

docker-bash() {
  docker run --rm -it "$1" bash --init-file <(echo "ls; pwd")
}
Run Code Online (Sandbox Code Playgroud)

但这些命令似乎没有运行:

 % docker-bash c7460dfcab50
root@9c6f64a9db8c:/#
Run Code Online (Sandbox Code Playgroud)

这是一个逃避问题还是......发生了什么事?

bash --init-file <(echo "ls; pwd")
Run Code Online (Sandbox Code Playgroud)

单独在我的主机上的终端中按预期工作(运行命令启动一个新的 bash 实例)。

bash docker

2
推荐指数
1
解决办法
2574
查看次数