标签: shell

Shell脚本文件包含多个命令

我想在windows和linux中使用多个命令制作shell脚本文件.

例如run.sh和run.bat,使用以下命令 run.batrun.sh

mvn clean
mvn install
mvn exec:java
Run Code Online (Sandbox Code Playgroud)

当我运行我的run.bat文件时,它只执行第一个命令,mvn clean但它不执行其他命令.

如何使用多个命令创建shell脚本文件,以便在执行它时,它执行其中的所有命令.

谢谢.

linux bash shell batch-file maven

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

/ usr/bin/rename:参数列表太长(批量重命名文件)

我试图通过截断文件名中出现第一个空格的文件来批量重命名某些文件.我写了一个简单的脚本来重命名这样做:

for i in *.fa; do rename 's/\s.*//' *.fa; done
Run Code Online (Sandbox Code Playgroud)

这在测试中工作正常,并根据需要产生以下结果:

$:~/testenv$ ls
NM_000016.5_LastMex1_4_12 23 0 1 KB882088_3062975-30.fa  NM_000016.5_PastMex1_4_12 23 0 1 KB882088_3062975-30.fa
$:~/testenv$ for i in *.fa; do rename 's/\s.*//' *.fa; done
$:~/testenv$ ls
NM_000016.5_LastMex1_4_12  NM_000016.5_PastMex1_4_12
Run Code Online (Sandbox Code Playgroud)

不幸的是,我必须在很多文件上做到这一点,大约670万.这给了我以下错误:

/usr/bin/rename: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种各样的技巧,即使我使用find它似乎无法拿起文件.

$:~/testenv$ ls
NM_000016.5_astMex1_4_12 23 0 1 KB882088_3062975-30.fa   NM_000016.5_PastMex1_4_12 23 0 1 KB882088_3062975-30.fa
NM_000016.5_LastMex1_4_12 23 0 1 KB882088_3062975-30.fa    
$:~/testenv$ find . -maxdepth 1 -type f -exec sh -c 'rename 's/\s.*//' *.fa' _ {} \;
find: `./NM_000016.5_PastMex1_4_12 23 …
Run Code Online (Sandbox Code Playgroud)

bash shell rename find

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

如何传递带有特殊字符的参数来调用shell脚本

使用如下所需的参数调用.sh(shell脚本): -

sh home/example.sh --context_param dbUserName=username --context_param dbPassword=exam!ple##### --context_param resultDate=2017-01-13
Run Code Online (Sandbox Code Playgroud)

使用参数dbUsername和password调用example.sh但是出现以下错误: -

-bash:!ple #####:找不到事件

我认为特殊字符限制命令执行.然后我如何传递特殊字符.任何帮助都会很明显.

linux bash shell quoting

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

如何设置featureCompatibilityVersion而无需访问Ubuntu 16.10中的Mongo shell?

我正在尝试在我的本地机器上安装MongoDB 3.2,运行Ubuntu 16.10.

在安装过程中,没有错误; 然后,当我跑mongod,我得到以下错误:

Cannot start mongod when the featureCompatibilityVersion is higher than 3.2. See http://dochub.mongodb.org/core/3.4-feature-compatibility.

Fatal Assertion 40352

但是,当我在MongoDB的文档中找到该链接时,它显示设置功能兼容性的唯一方法是通过mongoshell.然而,我甚至无法访问它,正如我之前提到的那样,并在下面的终端输出中显示.

我以前安装了MongoDB 3.4,但我需要3.2,因为这是与mLab兼容的最新版本,我将在转向生产时使用.

所以首先我尝试降级它,我遇到了同样的问题.然后我尝试完全卸载3.4(按照卸载说明)并安装3.2.然后我得到了同样的错误.

这是完整的终端输出:

2017-02-10T09:42:10.134+0530 I CONTROL  [initandlisten] MongoDB starting : pid=3465 port=27017 dbpath=/data/db 64-bit host=fluidlan
2017-02-10T09:42:10.134+0530 I CONTROL  [initandlisten] db version v3.2.12
2017-02-10T09:42:10.134+0530 I CONTROL  [initandlisten] git version: ef3e1bc78e997f0d9f22f45aeb1d8e3b6ac14a14
2017-02-10T09:42:10.134+0530 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2017-02-10T09:42:10.134+0530 I CONTROL  [initandlisten] allocator: tcmalloc
2017-02-10T09:42:10.134+0530 I CONTROL  [initandlisten] modules: none
2017-02-10T09:42:10.134+0530 I …
Run Code Online (Sandbox Code Playgroud)

shell ubuntu mongodb

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

如何从shell中确定CSV中的字段数?

我有一个格式正确的CSV文件,可能有也可能没有标题行; 并且可能有也可能没有引用数据.我想使用shell确定其中的列数.

现在,如果我可以确定文件中没有带引号的逗号,则以下内容似乎有效:

x=$(tail -1 00-45-19-tester-trace.csv | grep -o , | wc -l); echo $((x + 1))
Run Code Online (Sandbox Code Playgroud)

但如果我不能做出这样的假设呢?也就是说,如果我不能假设逗号总是一个字段分隔符怎么办?那我该怎么办?

如果它有帮助,你可以假设没有引用的引号(即\"在引用的字符串之间的s); 但最好不要制作那个.

csv bash shell counting multiple-columns

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

csh脚本错误:变量名必须以字母开头

set number = $<
set n = @ $number % 2
Run Code Online (Sandbox Code Playgroud)

我是csh的新手.我只是想了解基本的东西.我收到此错误:我该set: Variable name must begin with a letter. 如何解决?

shell csh

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

tr -d [=,=]做什么?

我有一个代码示例,似乎在一些文本处理结束时添加了一些额外的格式:

tr -d [=,=]
Run Code Online (Sandbox Code Playgroud)

我不知道这是做什么的,并且man page对它tr没什么帮助.对此有何见解?

bash shell sh tr

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

如何使用Swift从cocoa应用程序运行shell脚本?

如何使用Swift从cocoa应用程序运行shell脚本?

我有一个shell脚本file.sh,我想在我的cocoa应用程序中运行.我怎么能用Swift做到这一点?

任何帮助赞赏!:)

shell terminal cocoa swift

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

用点创建mysql数据库

我想使用以下语法创建数据库

mysql -u<uname> -p<password> -e "create database <name>"
Run Code Online (Sandbox Code Playgroud)

但是每当我尝试在数据库名称中使用点(。)时,都会出现错误。

[root@aee9a1889c3f wpg.master]# mysql -uroot -proot -e "create database 'a.n'"
Warning: Using a password on the command line interface can be insecure.
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''a.n'' at line 1

[root@aee9a1889c3f wpg.master]#

[root@aee9a1889c3f wpg.master]#

[root@aee9a1889c3f wpg.master]# mysql -uroot -proot -e "create database `a.n`"
bash: a.n: …
Run Code Online (Sandbox Code Playgroud)

mysql database shell command

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

为什么`((0))`在.sh脚本中的返回值为1?

> [ 0 ]; echo $?
0
> [[ 0 ]]; echo $?
0
> (( 0 )); echo $?
1
> [ 1 ]; echo $?
0
> [[ 1 ]]; echo $?
0
> (( 1 )); echo $?
0
Run Code Online (Sandbox Code Playgroud)

是否(( 0 ))只是为了匹配其他语言中的典型数值false 的行为?IE哪里true == 1false == 0

bash shell sh

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

标签 统计

shell ×10

bash ×6

linux ×2

sh ×2

batch-file ×1

cocoa ×1

command ×1

counting ×1

csh ×1

csv ×1

database ×1

find ×1

maven ×1

mongodb ×1

multiple-columns ×1

mysql ×1

quoting ×1

rename ×1

swift ×1

terminal ×1

tr ×1

ubuntu ×1