shell脚本问题&技巧

原创 2013年12月04日 14:03:49



标准输入输出问题

cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中

详见http://blog.csdn.net/hnmsky/article/details/7035814



source & . 环境问题

如cmdEnv命令是通过source 或 . 导入到环境中,

想在cmdline中运行脚本shB,且可以shB可以调用cmdEvn,

则可以这样调用:

sin$ . shB cmdEvn



脚本中运行其它脚本,兼容问题:

autorun.sh:

#!/bin/sh

....

./tmp.sh


tmp.sh:

. ./build/evesetup.sh

....


evesetup.sh:

function hmm(){

cat <<EOF

heloo,comment begin

comment end

EOF

}


运行autorun.sh 报错:build/envsetup.sh: 1: Syntax error: "(" unexpected

解决1:autorun.sh 使用#!/bin/bash ,之后使用at命令也可以运行。

解决2:去掉autorun.sh第一行,与evesetup.sh风格一致。at命令运行会报错

解决3:执行$sudo dpkg-reconfigure dash命令,并选择“否”(配置使用dash环境而非bash环境)(未尝试)



http://www.51testing.com/html/02/403602-236690.html

#!/bin/sh
cd /home

./1.sh运行之后,pwd发现还是在原目录下,并未切换至home目录。该脚本这么简单,不会是脚本问题,那时什么原因呢?我在网上查找,有人说,Ubuntu默认的是dash脚本而非bash脚本,dash的速度较快但是有些在bash上可以运行的脚本在dash上就不行。可以用ls /bin/sh -al ,来查看一下指向的哪种类型,如果是指向dash,我们可以把它换成bash,sudo dpkg-reconfigure dash
出现菜单问你是否要dash的时候,选no就可以了。


我改了之后问题又来了,还是无法cd,我就无语了。然后又在脚本里加入了一句pwd查看路径,然后运行结果是进入了/home,可是运行结束再pwd就不行了,当时我就纠结了,实际上脚本是正确执行了的,但是我们看到的结果是不对的。后来看了Shell脚本十三问,才明白其中道理。原来在我们执行脚本时,会自动运行一个子脚本去完成里面的指令,然后回到父脚本,所有当我们在脚本执行结束后去pwd,是不行的。那如何让名命令在当前脚本执行呢?可以用source ./1.sh或者../1.sh,这样就可以了。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

shell脚本问题

  • 2012-09-12 20:57
  • 117KB
  • 下载

8大shell脚本技巧

作者Fizer Khan是一位Shell脚本迷,他对有关Shell脚本新奇有趣的东西是如此的痴迷。最近他遇到了authy-ssh脚本,为了缓解ssh服务器双重认证问题,他学到了许多有用且很酷的东西。对...

shell脚本高级技巧系列

Linux Shell高级技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/12/22/2271167.html 一、将输入信息转换为...

收集的48个Shell脚本小技巧

本文收集了一堆的shell脚本技巧,我说过,我写博客主要是作一些学习笔记,方便自己查阅,所以,我会搞出这么一篇文章,也没有什么不可理解的。关于这些技巧的出处,诶,我也忘了,可能来自theunixsch...

windows下写的shell脚本,到linux下无法使用的问题

在windows下写了段脚本,结果到linux下运行时报错: /bin/bash^M: bad interpreter: No such file or directory 这是因为不同操作系统...
  • kyfxbl
  • kyfxbl
  • 2013-11-16 16:13
  • 1298

c语言中调用shell脚本返回值问题分析

c语言中调用shell脚本 C程序调用shell脚本共有三种方式:system()、popen()、exec系列函数 1)system(shell命令或shell脚本路径);  ...
  • yi412
  • yi412
  • 2015-07-29 19:07
  • 1014

关于引入pods的iOS项目使用shell脚本编译的问题与探索

关于引入pods的iOS项目使用shell脚本编译的问题与探索 由于自己所在公司是做生成平台的所以app自动打包是必要的而xcode和commandlinetools确实也提供了这样的功能,在没有使用...

Ubuntu下运行Shell脚本时显示“declare not found”的问题

此种问题只在 Ubuntu 下才会出现!安装 debian 系统根本不存在此类问题,因为只有 Ubuntu 把默认的 bash 替换成了 dash. 在使用 debian 一天后感觉:Ubuntu ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)