今天查网站pr, 时光邮局没有变, 还是0. 可能主要的原因有两个吧, 一个是除了本网站做了链接上去, 其他很少有指向它的链接, 导致收到的pr贡献太少. 另一方面, 写公开信的人太少, 很多人都是写密信, 所以网站内容更新的频率其实很不频繁~综合起来, 导致它的pr没有变化. 不过惊喜的是, 本网站的pr竟然一下子达到了2. 看样子走坚持更新的技术+随笔博客这样的路线还是靠谱的~打算再去找一些友情链接过来. 当然啦, 更新频率肯定还是得坚持的~~ 5.5补充: 更加惊讶地发现, 时光邮局的pr也升到1了...大概是被屌丝网带起来的~~哈哈, 我从来木有过pr超过0的网站...现在终于有两个啦!!继续努力!!
shell变量之辨[8]
阅读全文function func() { echo "GLOBAL = $GLOBAL"; export LOCAL="abc" echo "LOCAL = $LOCAL"; } export GLOBAL="global"; export LOCAL="LOCAL"; (func) #()即表示使用一个子shell执行 echo "LOCAL = $LOCAL";可能上面的一句话粗看起来比较费解. 解释一下 1. export, 即可以改变一个环境变量的值, 比如我们在linux shell下可以export LANG=en_US, 去设置语言变量 2. 如果A进程, 调用B进程(比如调用另一个shell脚本, 或者是用一个子shell去执行一个函数) 3. B进程中使用export去改变环境变量的值, 该变量在B中生效 4. A进程中的环境变量不被影响
The post shell变量之辨[8] appeared first on 邮递员大叔.
shell变量之辨[7]
阅读全文[局部变量]
a="global"; function func() { a="func_global"; echo "in func: a = $a"; } function func2() { local a="func2_local"; echo "in func2: a = $a"; } echo "a = $a"; func; echo "a = $a"; func2; echo "a = $a";在函数中可以通过”local”的方式标明变量只在局部使用, 也就是说在fun2中, 我们通过local将变量设置为了只在函数内部使用. 因此它的赋值等操作不会影响函数之外的同名变量.
The post shell变量之辨[7] appeared first on 邮递员大叔.
shell变量之辨[6]
阅读全文[变量的类型?]
#!/bin/bash a="1234" let "a += 1" echo "a = $a"; b=${a/23/AB}; echo "b = $b"; b=1234 echo "b = $b"; b=abcd echo "b = $b"; b=${a/23/AB}; declare -i b echo "b = $b"; b=1234 echo "b = $b"; b=abcd echo "b = $b";shell是不区分变量类型的, 我们使用它的时候它会自动选择我们所需要的类型. 就如同上面的第一段代码, a是字符串, 但是让它做加法运算, 很自然地会把它当成数字, 输出: a = 1235 再看第二段, b被赋值为${a/23/AB}, 即将a中的"23"替换为"AB", 输出的即为: b = 1AB5 再接下来, b被重新赋值为1234这样的一个"Int", 或者是abcd这样的"String", 很自然地, 输出为: b = 1234 b = abcd 但是, 我们在第三段代码中使用了一个"declare -i", 这个就很神奇了. declare是显式指明变量类型, -i表示int. 输出的结果是这样的: b = 1AB5 b = 1234 b = 0 当b已经是一个字符串1AB5的时候, 输出的值表明它并没有什么变化, 接下来我们赋值为1234这样的int, 也很正常. 但是再次将其赋值为一个字符串, 它表现出来的现象和刚刚第二段就不同了. 输出的内容是0, 即字符串"abcd"被当成一个int类型时, 数值为0
The post shell变量之辨[6] appeared first on 邮递员大叔.
shell变量之辨[5]
阅读全文[神奇的文件描述符2]
#! /bin/bash echo -e "1\n2\n3\n4" > "$0.txt"; exec 3<> $0.txt #注意3和<>之间没有空格 while read line <& 3 #注意此处写在while行之后, 而不是done之后 do echo "$line"; ssh "db-testing-ps1833.db01" "ls > /dev/null" done这样的话, 输出的结果就是符合我们预期的4行内容啦! [神奇的文件描述符3]
#!/bin/bash lftp ftp://db-testing-ps1833.db01/home/work/mc-tools <<! ls -l; bye; ! ssh db-testing-ps1833.db01 <<! ls /home/work/mc-tools ! <<COMMENT echo hello COMMENT看看以上这段代码, 其中使用了这样的形式:
The post shell变量之辨[5] appeared first on 邮递员大叔.
shell变量之辨[4]
阅读全文[函数,函数!]
#! /bin/bash function func() { echo "I am func"; echo "xx" >& 2 return $1 } a=`func 1`; echo "begin"; echo "$?"; echo "$a" echo "end" echo "----------" echo "begin"; b=$(func 2); echo "$?"; echo "$b"; echo "end";1. 如何获得return的值? 答案: $? 2. 如何获得”echo”的值(I am func) 答案: ``和$()
#! /bin/bash echo -e "1\n2\n3\n4" > "$0.txt"; while read line # 还有一种方式和此等价: cat 文件名 | while…. do echo "$line"; # ssh "db-testing-ps1833.db01" "ls > /dev/null" done < “$0.txt” #注意<写在done后面, 而不是写在while一行之后如果没有ssh这一行, 无疑结果就是输出1 2 3 4,分别一行
The post shell变量之辨[4] appeared first on 邮递员大叔.
shell变量之辨[3]
阅读全文[裸体变量]
#!/bin/bash a=12+3 echo "$a" let a=12+3 echo "$a" for a in 1 2 3 do echo -n "$a " done echo read a echo "$a"输出为: 12+3 15 1 2 3 123456 123456 [获取命令结果]
#! /bin/bash a=`ls -l`; echo "$?" echo "$a"; echo "____"; b=$(ls -l); echo "$?" echo "$b"; echo "____" c=`ls -l /xxx`; echo "$?" echo "$c"; echo "____"; d=$(ls -l /xxx); echo "$?" echo "$d"; echo "____"输出结果自己试一试吧~~
The post shell变量之辨[3] appeared first on 邮递员大叔.
shell变量之辨[2]
阅读全文[大括号的作用]
#! /bin/bash xxoo="I am 1"; xxoo2="I am 2"; echo $xxoo2 echo ${xxoo}2 echo ${xxoo2}猜一猜, 输出结果是? 大括号在shell中, 用于防止变量名称的混淆, 大括号括起来之后表示一个完整的变量名称, 防止中间即被截断 上面的一段代码, 输出的内容是: I am 2 I am 12 I am 2 [变量的引用和替换]
#! /bin/bash xxoo="a b c d"; echo $xxoo echo "$xxoo" echo '$xxoo' echo \$xxoo echo "\$xxoo“让我们猜一猜, 这种情况下的运行结果? 不使用双引号: 变量替换, 和echo a b c d这样形式的结果一样 双引号: 弱引用; 单引号: 强引用 因此实际上, 上面一段程序的输出是: a b c d a b c d $xxoo $xxoo $xxoo
The post shell变量之辨[2] appeared first on 邮递员大叔.
shell变量之辨[1]
阅读全文来baidu之后, 经常使用到shell脚本. shell脚本功能比较简单, 但因为可以方便地使用linux自带的很多命令, 因此使得shell脚本在平时的工作中依然能够发挥非常大的作用. 之前做了一份ppt, 主要针对shell变量的许多使用方式进行了总结. 并且自己去配了相应的测试脚本等. (部分内容是参考《高级Bash脚本编程指南.pdf》这本书上的内容) 所以从今天开始, 就写一写相关的内容, 希望对初学shell的同学起到一定的帮助吧. [基本赋值] $: 变量替换操作符 例如:
a=175 hello=$a其中=的前后绝对不要有空格, 为什么?
#! /bin/bash a=175 hello=$a hello =$a hello= $a上面这段代码会如何输出? ./test1.sh: line 5: hello: command not found ./test1.sh: line 6: 175: command not found
The post shell变量之辨[1] appeared first on 邮递员大叔.
如何在thinkphp(sae版)中使用ueditor插件[3]
阅读全文接下来算是比较重要的一点了吧, 在SAE平台上, 把上传图片神马的给用起来~~ 话说, 看了下1.2版本的UEditor, 发现比1.1.8版本多了挺好玩儿的功能啊~ 插入图片和插入视频这两个按钮, 里面都增加了一个"搜索"的功能, 搜索之后的结果选中了就可以直接插入编辑框中, 嗯, 这个还是挺赞的~ 其中视频搜索, 会自动解析视频的地址, 这个真心赞啊~ 废话不多说, 进入正式环节 1. 去除图片的"在线管理"功能. (这玩意儿功能是挺好的, 但是又得改程序, 又可能有权限之类的问题, 还是不开放给用户好啦) 找到dialogs/image/image.html, 删除以下代码:
<span tabSrc="imgManager">在线管理</span>2. 修改图片上传的php文件, 还是在相同的文件中, 找到如下代码:
url:'../../server/upload/php/imageUp.php',另外, 1.1.8的版本中, 是这样的:
url:'../../server/upload/php/up.php',找到这个server目录中的imageUp.php文件进行修改. 找到之后发现同级目录下, 总共是有3个文件的, 分别是fileUp, imageUp, snapImageUp.(1.1.8只有up.php) , 这三个文件, 顾名思义, 分别是用来处理文件上传, 图片上传, 截图上传的~ 修改起来其实都比较类似, 我这儿还是只拿imageUp.php做个示例好了. 核心工作其实非常简单, 就是写一个新的php脚本, 用来替代原有的imageUp.php, 因为我是用的Thinkphp, 所以干脆直接把我的代码放出来吧 1) 修改以上的调用路径为:
url:'../../../../Pic/upload',2) 写一个PicAction.class.php, 内容为:
<?php class PicAction extends Action { public function upload() { //文件上传状态,当成功时返回SUCCESS,其余值将直接返回对应字符窜并显示在图片预览框,同时可以在前端页面通过回调函数获取对应字符窜 $state = "SUCCESS"; $title = htmlspecialchars($_POST['pictitle'], ENT_QUOTES); $domain = C('PIC_UPLOAD_DOMAIN'); $path = C('PIC_UPLOAD_PATH'); $file = ""; //格式验证 $current_type = strtolower(strrchr($_FILES["picdata"]["name"], '.')); if(!in_array($current_type, C('PIC_FILE_TYPE'))){ $state = "不支持的图片类型!"; } //大小验证 $file_size = 1024 * C('PIC_FILE_SIZE'); if( $_FILES["picdata"]["size"] > $file_size ){ $state = "图片大小超出限制!"; } //保存图片 if($state == "SUCCESS") { $storage = new SaeStorage(); $file = C('PIC_UPLOAD_PATH').uniqid().$current_type; $result = $storage->upload(C('PIC_UPLOAD_DOMAIN'), $file, $_FILES["picdata"]["tmp_name"]); if(!$result){ $state = "图片保存失败!"; } $file = $storage->getUrl($domain, $file); } echo "{'url':'".$file."','title':'".$title."','state':'".$state."'}"; } } ?>其中C('xx')这样的配置, 就根据自己的需要进行修改吧~这段代码还是比较容易理解的... 嗯哪, 这就ok了...(貌似关键的地方稍微简略了一点啊!!) 3. 唔, 经过再次尝试, 发现上面漏了一处~ 在1.2.0版本中的image.js, 或者是1.1.8版本中的image.html中, 找到如下代码:
tmpObj.data_ue_src = tmpObj.src = editor.options.imagePath + ci.url;修改为:
tmpObj.data_ue_src = tmpObj.src = ci.url;即, 针对storage中存储的图片, 直接使用返回的地址(即http://开头的绝对地址了) wordImage目录, 即word粘贴后的image处理, 与image处理类似, 不过第3步的时候, 修改的是如下代码:
img.src = editor.options.imagePath + url.url; img.setAttribute("data_ue_src", editor.options.imagePath + url.url); //同时修改"data_ue_src"属性同理, 也是将+前面的imagePath那一坨去掉即可~~
The post 如何在thinkphp(sae版)中使用ueditor插件[3] appeared first on 邮递员大叔.