相关疑难解决方法(0)

切换机箱有穿透?

我正在寻找switch语句的正确语法与Bash中的初级案例(理想情况下不区分大小写).在PHP中我会编程它像:

switch($c) {
    case 1:
        do_this();
        break;
     case 2:
     case 3:
        do_what_you_are_supposed_to_do();
        break;
     default:
        do_nothing(); 
}
Run Code Online (Sandbox Code Playgroud)

我希望在Bash中也一样:

case "$C" in
    "1")
        do_this()
        ;;
    "2")
    "3")
        do_what_you_are_supposed_to_do()
        ;;
    *)
        do_nothing();
        ;; 
esac
Run Code Online (Sandbox Code Playgroud)

这在某种程度上是行不通的:do_what_you_are_supposed_to_do()当$ C为2或3时,应该触发函数.

bash switch-statement

176
推荐指数
5
解决办法
15万
查看次数

如何配置bash shell脚本慢启动?

我的bash shell需要3-4秒才能启动,而如果我启动它--norc会立即运行.

我开始"分析" /etc/bash.bashrc~/.bashrc通过手动插入return语句和寻求速度改进,但它不是一个定量过程而且效率不高.

如何配置我的bash脚本并查看哪些命令需要花费大部分时间来启动?

bash profiling

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

如何逐行执行bash脚本?

如果我输入bash -x选项,它将显示所有行.但脚本将执行正常.

我该如何逐行执行?我可以看到它是否做了正确的事情,或者我中止并修复了这个bug.read每一行都有相同的效果.

bash

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

是否可以逐行调试bash脚本?

我会喜欢像Microsoft Visual Studio在bash中逐行调试的东西,当前的变量值等等.

有没有工具或方法可以做到这一点?set -x并且set -v很好但不完美.

debugging bash line-by-line

6
推荐指数
1
解决办法
2140
查看次数

使用行号调试shell脚本

我继承了700多行shell脚本,注意到当我运行脚本时,它会在某个执行点吐出错误.

例如,我在控制台上看到的错误是这样的

cat: /Wreck/wreck_module.rb: No such file or directory 
Run Code Online (Sandbox Code Playgroud)

我试图使用set -x链接中的大部分提示,但是我注意到我得到的所有输出都非常嘈杂.

有没有办法获得shell命令返回非零状态的确切行号?

unix linux shell

6
推荐指数
1
解决办法
1360
查看次数

如何在GDB中运行.sh(shell脚本)文件?

我有一个名为'simple'的脚本文件.我可以使用./simple运行它,一切正常.

我需要在GDB中运行此文件以回溯一个特定参数的更改方式以及调用的函数.当我尝试

(gdb) file simple
Run Code Online (Sandbox Code Playgroud)

"/ home/examples/simple":不是可执行格式:无法识别文件格式

(gdb) r simple
Run Code Online (Sandbox Code Playgroud)

启动程序:简单

没有指定可执行文件.

使用"file"或"exec-file"命令

我怎么能克服这个?

shell gdb

5
推荐指数
1
解决办法
6197
查看次数

grep始终返回“ grep:指定了冲突的匹配器”

使用默认终端在MacOSX 10.13.3上运行。当我尝试使用grep命令时,我将其作为输出接收。无论。我更改了目录,选项,甚至grep单独返回了相同的内容。它返回:

grep: conflicting matchers specified
Run Code Online (Sandbox Code Playgroud)

最近,我在Homebrew上安装了一些新的命令行工具,并相信我brew install grep正在尝试在计算机上获取正式的linux版本。这是我能想到的唯一改变。

这是痕迹。如您所见,grep命令成功运行,但是输出是错误消息而不是结果:

命令

grep -l 'this' *.txt
Run Code Online (Sandbox Code Playgroud)

跟踪

+ grep -GFh -l this ga_users.txt montecitovt_apache_logs-2018-02-09_21-58-40.txt tag_manager_more_than_one_ga_account.txt urls_in_sitemap.txt
grep: conflicting matchers specified
++ update_terminal_cwd
++ local url_path=
++ local i ch hexch LC_CTYPE=C LC_ALL=

...

[REDACTED]
Run Code Online (Sandbox Code Playgroud)

bash grep

5
推荐指数
1
解决办法
3433
查看次数

4
推荐指数
2
解决办法
1372
查看次数

在文件名中调用Shell变量时为空,但在echo或在其他地方调用时则不是

我有4个shell变量集

remote_account="raccname"
remote_machine="server"
First_Name="firstname"
Last_Name="lastname"
Run Code Online (Sandbox Code Playgroud)

当我打电话remote_accountremote_machine在我的剧本中,他们得到了很好的使用

echo "What directory shall you choose?"
  read dir
  scp -r ~/csc60/$dir $remote_account@$remote_machine:directoryA
  exit;;
Run Code Online (Sandbox Code Playgroud)

但是当我打电话给其他两个人的时候

echo "What directory shall you choose?"
  read dir
  scp $remote_account@$remote_machine:tars/$Last_Name_$First_Name_$dir.tar.z ~/tars
  exit;;
Run Code Online (Sandbox Code Playgroud)

当我扔进去时,它会抓取tars文件tars/$dir.tar.z完全跳过它仍显示为"lastname"$Last_Name_$First_Name_echo $Last_Name

变量之间是否有一些使用"_"的规则,或者我只是遗漏了一些明显的东西?

linux variables bash shell

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

如何正确调试bash脚本

我在bash脚本中使用以下代码来跟踪代码

#!/bin/bash
function trace()
{
    echo "TRACE" \
         "${BASH_SOURCE[1]}:${BASH_LINENO[0]}:${FUNCNAME[1]}:" \
         "$BASH_COMMAND"
}

set -o functrace
shopt -s extdebug
trap trace DEBUG

# Remainder of code here
exit 0
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,它会吃掉我的变量.一些线索?

linux debugging bash

0
推荐指数
2
解决办法
1304
查看次数