我想知道是否
- 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
里卡多
我们有一个用Swift lang编写的脚本.现在我们更新到Swift 3并面对下一个问题:我们无法访问进程参数,编译错误:
错误:实例成员'arguments'不能用于'Process'类型
我们现在应该如何访问流程参数?
我有一段连接到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) 我不明白为什么会这样
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)
我怎样才能让最后一个案例起作用?
我目前的输出是:
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脚本变量传递到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 [用户输入任何列的列],然后我将在输出中获取这些列.我尝试传入它,但我想我没有正确的语法.
我知道,要看到我们上次执行的命令是正确的是shell,我们使用" echo $?"命令.为什么它返回2作为输出,它意味着什么?
我正在运行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命令,格式如下:
my_cmd -I file1.inp -O file1.out
Run Code Online (Sandbox Code Playgroud)
进行某些处理file1.inp并将结果存储在其中的地方file1.out
在我的主目录中,我有许多格式为的文件:*.inp我想为所有这些文件运行此命令并将结果存储到*.out.我可以只用shell脚本来实现吗?
我有一个包含循环的字符串变量.
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)