我有一个文件f1:
line1
line2
line3
line4
..
..
Run Code Online (Sandbox Code Playgroud)
我想删除另一个文件中的所有行f2:
line2
line8
..
..
Run Code Online (Sandbox Code Playgroud)
我想的东西cat和sed,这甚至还没有接近我所预期的.我怎样才能做到这一点?
标题是什么:将变量封装在{},""或者"{}" 是什么意思?"我无法在网上找到任何关于此的解释 - 除了使用符号之外我还没有能够引用它们不产生任何东西.
这是一个例子:
declare -a groups
groups+=("CN=exampleexample,OU=exampleexample,OU=exampleexample,DC=example,DC=com")
groups+=("CN=example example,OU=example example,OU=example example,DC=example,DC=com")
Run Code Online (Sandbox Code Playgroud)
这个:
for group in "${groups[@]}"; do
echo $group
done
Run Code Online (Sandbox Code Playgroud)
证明与此有很大不同:
for group in $groups; do
echo $group
done
Run Code Online (Sandbox Code Playgroud)
还有这个:
for group in ${groups}; do
echo $group
done
Run Code Online (Sandbox Code Playgroud)
只有第一个完成我想要的东西:遍历数组中的每个元素.我不是之间的差异是很清楚$groups,"$groups",${groups}和"${groups}".如果有人能解释,我会很感激.
作为一个额外的问题 - 是否有人知道引用这些封装的可接受方式?
我想存储一个命令,以便稍后在变量中使用(不是命令的输出,而是命令本身)
我有一个简单的脚本如下:
command="ls";
echo "Command: $command"; #Output is: Command: ls
b=`$command`;
echo $b; #Output is: public_html REV test... (command worked successfully)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试更复杂的东西时,它会失败.例如,如果我做
command="ls | grep -c '^'";
Run Code Online (Sandbox Code Playgroud)
输出是:
Command: ls | grep -c '^'
ls: cannot access |: No such file or directory
ls: cannot access grep: No such file or directory
ls: cannot access '^': No such file or directory
Run Code Online (Sandbox Code Playgroud)
知道如何在变量中存储这样的命令(使用管道/多个命令)供以后使用吗?
我有
var="a b c"
for i in $var
do
p=`echo -e $p'\n'$i`
done
echo $p
Run Code Online (Sandbox Code Playgroud)
我想要打印最后一个回声
a
b
c
Run Code Online (Sandbox Code Playgroud)
请注意,我希望变量p包含换行符.我怎么做?
我正在编写一个应该有点安全的shell脚本,即不通过命令参数传递安全数据,最好不使用临时文件.如何将变量传递给命令的stdin?或者,如果不可能,如何正确使用临时文件进行此类任务?
以下是一系列echo $var可以显示与刚刚分配的值不同的值的情况.无论指定的值是"双引号","单引号"还是不引用,都会发生这种情况.
如何让shell正确设置我的变量?
星号
预期的输出是/* Foobar is free software */,但我得到一个文件名列表:
$ var="/* Foobar is free software */"
$ echo $var
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
Run Code Online (Sandbox Code Playgroud)
方括号
期望值是[a-z],但有时我会得到一个字母!
$ var=[a-z]
$ echo $var
c
Run Code Online (Sandbox Code Playgroud)
换行(换行符)
预期值是一个单独的行列表,但所有值都在一行!
$ cat file
foo
bar
baz
$ var=$(cat file)
$ echo $var
foo bar baz
Run Code Online (Sandbox Code Playgroud)
多个空间
我期望一个精心对齐的表头,但是多个空格要么消失要么折叠成一个!
$ var=" title | count"
$ echo $var
title | count
Run Code Online (Sandbox Code Playgroud)
标签
我期望两个制表符分隔值,但我得到两个空格分隔值!
$ …Run Code Online (Sandbox Code Playgroud) 我有以下shell脚本.目的是循环到目标文件的每一行(其路径是脚本的输入参数)并对每一行进行操作.现在,它似乎只适用于目标文件中的第一行,并在该行被处理后停止.我的剧本有什么问题吗?
#!/bin/bash
# SCRIPT: do.sh
# PURPOSE: loop thru the targets
FILENAME=$1
count=0
echo "proceed with $FILENAME"
while read LINE; do
let count++
echo "$count $LINE"
sh ./do_work.sh $LINE
done < $FILENAME
echo "\ntotal $count targets"
Run Code Online (Sandbox Code Playgroud)
在do_work.sh,我运行了几个ssh命令.
我试图获取OS X上当前运行脚本的绝对路径.
我看到很多回复readlink -f $0.但是,由于OS X readlink与BSD相同,它只是不起作用(它适用于GNU的版本).
有没有开箱即用的解决方案?
我正在创建一个脚本来自动创建apache虚拟主机.我的部分脚本是这样的:
MYSTRING="<VirtualHost *:80>
ServerName $NEWVHOST
DocumentRoot /var/www/hosts/$NEWVHOST
...
"
echo $MYSTRING
Run Code Online (Sandbox Code Playgroud)
但是,脚本中的换行符将被忽略.如果我回显字符串,就会吐出一行.
如何确保打印换行符?
我有一个像这样的变量:
words="??????"
Run Code Online (Sandbox Code Playgroud)
我想打一个for循环的每个字符,一次一个,例如第一的character="?",那么character="?",character="?"等
我知道的唯一方法是将每个字符输出到文件中的单独行,然后使用while read line,但这似乎非常低效.