标签: shell

Ansible shell和with_items

我想知道是否

  - shell: >
            hostname;
            whoami;
Run Code Online (Sandbox Code Playgroud)

  - shell: "{{item}}"
    with_items: ['hostname', 'whoami']
Run Code Online (Sandbox Code Playgroud)

相当于?在第二个示例中,Ansible将始终对两个命令(hostname,whoami)使用相同的SSH连接?


在我看来它是假的......

  - shell: "{{item}}"
    with_items: ['export miavar=PIPPO', 'echo $miavar']

    (item=export miavar=PIPPO) => {"changed": true, "cmd": "export miavar=PIPPO", "stdout": ""}
    (item=echo $miavar)        => {"changed": true, "cmd": "echo $miavar", "stdout": ""}
Run Code Online (Sandbox Code Playgroud)

- 无形2.1.1.0

里卡多

shell ansible

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

Swift 3脚本 - 访问进程参数

我们有一个用Swift lang编写的脚本.现在我们更新到Swift 3并面对下一个问题:我们无法访问进程参数,编译错误:

错误:实例成员'arguments'不能用于'Process'类型

我们现在应该如何访问流程参数?

shell command-line swift swift3

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

当使用JSch通过Java执行时,某些Unix命令失败并显示"... not found"

我有一段连接到Unix服务器并执行命令的代码.

我一直在尝试简单的命令,他们工作正常.

我能够登录并获得命令的输出.

我需要通过Java运行Ab-initio图.

我正在使用此air sandbox run graph命令.

当我使用SSH客户端登录并运行命令时,它运行正常.我能够运行图表.但是,当我尝试通过Java运行命令时,它会给我一个"未找到空气"的错误.

对JSch支持的Unix命令有什么限制吗?

知道为什么我无法通过我的Java代码运行命令吗?

这是代码:

public static void connect(){
    try{
      JSch jsch=new JSch();  

      String host="*****";
      String user="*****";
      String config =
                "Host foo\n"+
                "  User "+user+"\n"+
                "  Hostname "+host+"\n";

      ConfigRepository configRepository =
            com.jcraft.jsch.OpenSSHConfig.parse(config);

      jsch.setConfigRepository(configRepository);
      Session session=jsch.getSession("foo");

      String passwd ="*****";
      session.setPassword(passwd);
      UserInfo ui = new MyUserInfo(){

          public boolean promptYesNo(String message){

            int foo = 0;
            return foo==0;
          }
      };
      session.setUserInfo(ui);
      session.connect();

      String command="air sandbox run <graph-path>";

      Channel channel=session.openChannel("exec");
      ((ChannelExec)channel).setCommand(command);

      channel.setInputStream(null);

      ((ChannelExec)channel).setErrStream(System.err);

      InputStream …
Run Code Online (Sandbox Code Playgroud)

java unix ssh shell jsch

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

在命令替换中使用引号

我不明白为什么会这样

dateCMD=$(date -d "4 hours ago")
echo $dateCMD
Tue Oct 18 02:20:34 AEDT 2016
Run Code Online (Sandbox Code Playgroud)

这很有效

dateCMD="date"
$dateCMD
Tue Oct 18 06:23:19 AEDT 2016
Run Code Online (Sandbox Code Playgroud)

但不是这个

dateCMD='date -d "4 hours ago"'
$($dateCMD)
date: extra operand ‘ago"’
Run Code Online (Sandbox Code Playgroud)

我怎样才能让最后一个案例起作用?

bash shell

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

如何使用Shell脚本创建CSV文件

我目前的输出是:

echo "Time Taken to checkout svn repository repo_performance hosted on $host on `date` is : $Time_checkout seconds" >> log.csv
    echo "Time Taken to add $loopmax 10MB svn files in svn repository repo_performance  hosted on $host `date` is : $Time_add seconds" >> log.csv
    echo "Time Taken to commit $loopmax 10MB svn files in svn repository repo_performance  hosted on $host on `date` is : $Time_commit seconds" >> log.csv
Run Code Online (Sandbox Code Playgroud)

但是,我想创建一个csv文件,该文件在行中具有Host,Date,Operation,Duration及其值。

如何使用脚本制作它?

bash shell scripting

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

如何将变量传递给awk命令行

我在将bash脚本变量传递到awk命令行时遇到了一些麻烦.

这是伪代码:

for FILE in $INPUT_DIR/*.txt; do
 filename=`echo $FILE | sed -n 's/^.*\(chr[0-9A-Z]*\).*.vcf$/\1/p'`
 OUTPUT_FILE=$OUTPUT_DIR/$filename.snps.txt
 egrep -v "^#" $FILE | awk '{print $2,$4,$5}' > $OUTPUT_FILE
done
Run Code Online (Sandbox Code Playgroud)

我想要列的最后一行,我希望它是灵活的或用户输入.例如,用户可能还需要列6,7和8,或者列133和138,或者列245到248.因此,我如何自定义此项,以便我可以将'print $ 2 .... $ 5'设置为用户输入的东西?例如,用户将运行此脚本,如:bash script.sh input_dir output_dir [用户输入任何列的列],然后我将在输出中获取这些列.我尝试传入它,但我想我没有正确的语法.

bash shell awk

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

如果"echo $?"怎么办?命令返回2?

我知道,要看到我们上次执行的命令是正确的是shell,我们使用" echo $?"命令.为什么它返回2作为输出,它意味着什么?

linux shell echo

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

vagrant文​​件中的Shell环境变量仅在首次传递时传递

我正在运行Vagrant 1.8.5,它使用这样的格式在配置时支持Vagrantfile中的环境变量

config.vm.provision:shell,path:"bootstrap.sh",env:{"MYSQL_DB_USERNAME"=>"django","MYSQL_DB_PASSWORD"=>"supersecretpasswordwasreplaced"}

但是,我希望这些环境变量在up没有配置时,或者当我通过SSH连接到服务器来完成工作时也可用.我能找到的显而易见的方法是

  • 把它们装进盒子里(看起来像是矫枉过正)或者
  • 在我这里重复它们,config.ssh.forward_env以便它们可供配置器和SSH使用.

有没有更好的办法?

shell environment-variables vagrant

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

在多个文件上运行shell脚本作为输入

我有一个shell命令,格式如下:

my_cmd -I file1.inp -O file1.out
Run Code Online (Sandbox Code Playgroud)

进行某些处理file1.inp并将结果存储在其中的地方file1.out

在我的主目录中,我有许多格式为的文件:*.inp我想为所有这些文件运行此命令并将结果存储到*.out.我可以只用shell脚本来实现吗?

bash shell

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

如何将字符串传递给bash命令作为参数

我有一个包含循环的字符串变量.

loopVariable="for i in 1 2 3 4 5 do echo $i done"
Run Code Online (Sandbox Code Playgroud)

我想将此变量传递给shell脚本中的bash命令.但我总是得到一个错误

bash $loopVariable
Run Code Online (Sandbox Code Playgroud)

我也试过了

bin/bash $loopVariable
Run Code Online (Sandbox Code Playgroud)

但它也行不通.Bash处理字符串给我一个错误.但理论上它执行它.我不知道我做错了什么

bash: for i in 1 2 3 4 5 do echo $i done: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用while循环这种方法.但得到同样的错误

i=0 
loopValue="while [ $i -lt 5 ]; do make -j15 clean && make -j15 done"
bash -c @loopValue
Run Code Online (Sandbox Code Playgroud)

当我使用bash -c"@loopValue"时,我得到以下错误

bash: -c: line 0: syntax error near unexpected token `done'
Run Code Online (Sandbox Code Playgroud)

当我使用时,只需使用bash -c @loopValue

[: -c: line 1: syntax error: unexpected end …
Run Code Online (Sandbox Code Playgroud)

bash shell

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

标签 统计

shell ×10

bash ×5

ansible ×1

awk ×1

command-line ×1

echo ×1

environment-variables ×1

java ×1

jsch ×1

linux ×1

scripting ×1

ssh ×1

swift ×1

swift3 ×1

unix ×1

vagrant ×1