我有abc.sh:
exec $ROOT/Subsystem/xyz.sh
Run Code Online (Sandbox Code Playgroud)
在Unix机器上,如果我打印,echo $HOME那么我得到/HOME/COM/FILE.
我想更换$ROOT与$HOME使用sed的.
预期产出:
exec /HOME/COM/FILE/Subsystem/xyz.sh
Run Code Online (Sandbox Code Playgroud)
我试过了,但我没有得到预期的输出:
sed 's/$ROOT/"${HOME}"/g' abc.sh > abc.sh.1
Run Code Online (Sandbox Code Playgroud)
加成:
如果我有 abc.sh
exec $ROOT/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
Run Code Online (Sandbox Code Playgroud)
然后用
sed "s|\$INSTALLROOT/|${INSTALLROOT}|" abc.sh
Run Code Online (Sandbox Code Playgroud)
它只是首先替换$ROOT,即输出即将到来
exec /HOME/COM/FILE/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
Run Code Online (Sandbox Code Playgroud) 有输出sed:
http://sitename.com/galleries/83450
72-profile
Run Code Online (Sandbox Code Playgroud)
这两个字符串应合并为一个并用空格分隔,如:
http://sitename.com/galleries/83450 72-profile
Run Code Online (Sandbox Code Playgroud)
两个字符串是流水线的tr,以便用空格替换换行符:
tr '\n' ' '
Run Code Online (Sandbox Code Playgroud)
并且它不起作用,结果与输入相同.
使用ASCII代码指示空间会'\032'导致替换\n为不可打印的字符.
怎么了?我在Windows上使用Git Bash.
我想system在awk脚本中运行该命令并将其输出存储在变量中.我一直试图这样做,但命令的输出总是进入shell而我无法捕获它.关于如何做到这一点的任何想法?
例:
$ date | awk --field-separator=! {$1 = system("strip $1"); /*more processing*/}
Run Code Online (Sandbox Code Playgroud)
应该调用strip系统命令而不是将输出发送到shell,应该将输出分配回来$1进行更多处理.现在是Rignt,它将输出发送到shell并将命令的retcode分配给$1.
我尝试了很多东西.见下文:
尝试进入目录:/ cygdrive/c/Users/my dir/Documents
$ DOCS="/cygdrive/c/Users/my\ dir/Documents"
$ echo $DOCS
/cygdrive/c/Users/my\ dir/Documents
$ cd $DOCS
-bash: cd: /cygdrive/c/Users/my\: No such file or directory
$ cd /cygdrive/c/Users/my\ dir/Documents
(success)
Run Code Online (Sandbox Code Playgroud)
非常奇怪的行为.当我手动输入时,退格会执行其转义字符.但是当我使用变量DOCS的参数扩展时.
我尝试了其他变体,例如没有反斜杠.
$ DOCS=/cygdrive/c/Users/Rahman\ dir/Documents
$ echo $DOCS
/cygdrive/c/Users/my dir/Documents
$ cd $DOCS
-bash: cd: /cygdrive/c/Users/my: No such file or directory
Run Code Online (Sandbox Code Playgroud)
要么
$ DOCS="/cygdrive/c/Users/my dir/Documents"
$ echo $DOCS
/cygdrive/c/Users/my dir/Documents
$ cd $DOCS
-bash: cd: /cygdrive/c/Users/my: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我知道这是可能的.看这里:
$ echo $HOME
/home/my dir
Run Code Online (Sandbox Code Playgroud)
[编辑]正如所指出的,cd $ HOME也不起作用.引号必须放在它周围.
有没有搞错:
$ …Run Code Online (Sandbox Code Playgroud) 我知道如何重命名文件等,但我遇到了麻烦.
我只需要test-this在for循环中重命名.
test-this.ext
test-this.volume001+02.ext
test-this.volume002+04.ext
test-this.volume003+08.ext
test-this.volume004+16.ext
test-this.volume005+32.ext
test-this.volume006+64.ext
test-this.volume007+78.ext
Run Code Online (Sandbox Code Playgroud) 我的应用程序允许用户将其数据下载为CSV文件.这些应该在电子表格应用程序中打开.在Linux系统上,我被提示正确使用OpenOffice打开,但我的一些用户抱怨说,当他们下载文件时,它不会自动打开Excel,而是要求他们选择应用程序.当他们从其他网站下载CSV时,它会在Excel中正确打开.
我正在设置:
mimetype:text/csv
content_disposition:attachment; filename.csv
我正在编写一个bash脚本来修改包含一堆键/值对的配置文件.如何读取密钥并找到值并可能修改它?
这就是我正在做的(简化示例):
gsed -i -E 's/^(?!foo)(.*)$/bar\1/' file.txt
Run Code Online (Sandbox Code Playgroud)
我试图把bar每一行都放在前面foo.这是错误:
gsed: -e expression #1, char 22: Invalid preceding regular expression
Run Code Online (Sandbox Code Playgroud)
怎么了?
最近更新到Windows 10,安装了Ubuntu Bash.想要开始配置,但我已经碰壁了.
安装后,系统会要求您输入帐户的用户名和密码.这会创建用户级别.
是否可以访问root用户,SU?
每次我尝试,它都会要求输入密码,而且PC上的任何帐户都不起作用(即Windows 10管理员帐户密码不起作用).尝试了默认密码等,都失败了.
原因是在查看用户主目录时:创建文件时,它会在我的Windows用户帐户(权限)下创建它.
但是当我查看从Bash创建的文件时,它们是为Root用户创建的.
所以这是混乱,我修改了bashrc它,它不再由root拥有,所以它无法访问.
但是我无法登录root来创建或修改文件.
什么时候bashrc不归Root所有,加载Bash.exe时我得到.bashrc Input/output error.
我想声明一个变量,其名称来自另一个变量的值,我编写了以下代码:
a="bbb"
$a="ccc"
Run Code Online (Sandbox Code Playgroud)
但它不起作用.完成这项工作的正确方法是什么?