shell字符串截取报错:Bad substitution的解决
问题重现:
当前系统Ubuntu16
shell进行字符串截取
运行 ${GIT_COMMIT:0:6}报错:
/tmp/jenkins7505855461406722507.sh: 4: /tmp/jenkins7505855461406722507.sh: Bad substitution
原因:两种shell语言解释器 bash和dash
查看当前/bin/sh 指向哪种解释器:
ls /bin/sh -al lrwxrwxrwx 1 root root 4 Mar 26 2018 /bin/sh -> dash
修改bin/sh指向为bash:
sudo ln -fs /bin/bash /bin/sh
或者运行 sudo dpkg-reconfigure dash
后选择NO
或者修改表达式 ${GIT_COMMIT:0:6}为:
$(echo $GIT_COMMIT | awk '{ string=substr($0,0,6); print string; }')
到此这篇关于shell字符串截取报错:Bad substitution的解决的文章就介绍到这了,更多相关shell字符串截取报错内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Linux Shell 截取字符串的方法示例
shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var:start} ${var:0-start:len} ${var:0-start} 格式 说明 ${string: start :length} 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符. ${string: start} 从 string 字符串的左边第 start 个字符开始截取,直到
-
Shell脚本8种字符串截取方法总结
Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符. 复制代码 代码如下: echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.aaa.com/123.htm 2. ## 号截取,删除左边字符,保留右边字符. 复制代码 代码如下: echo ${var##*/}
-
Shell字符串截取的详细方法
一.Linux shell 截取字符变量的前8位,有方法如下: 复制代码 代码如下: 1.expr substr "$a" 1 82.echo $a|awk '{print substr(,1,8)}'3.echo $a|cut -c1-84.echo $5.expr $a : '\(.\\).*'6.echo $a|dd bs=1 count=8 2>/dev/null 二.按指定的字符串截取1.第一种方法:${varible##*string} 从左向右截取最后一个strin
-
shell编程中的字符串截取方法小结
一.Gnu Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr "$a" 1 8 2.echo $a|awk '{print substr(,1,8)}' 3.echo $a|cut -c1-8 4.echo $ 5.expr $a : '\(.\\).*' 6.echo $a|dd bs=1 count=8 2>/dev/null 二.按指定的字符串截取 1.第一种方法: ${varible##*string} 从左向右截取最后一个str
-
Powershell截取字符串并添加省略号的例子
限制字符串大小 支持所有版本. 确保你输出的字符串不会过长,当字符串超过你指定的长度你可以用下面办法将其缩短. 复制代码 代码如下: if ($text.Length -gt $MaxLength) { $text.Substring(0,$MaxLength) + '...' } else { $text }
-
shell字符串截取报错:Bad substitution的解决
问题重现: 当前系统Ubuntu16 shell进行字符串截取 运行 ${GIT_COMMIT:0:6}报错: /tmp/jenkins7505855461406722507.sh: 4: /tmp/jenkins7505855461406722507.sh: Bad substitution 原因:两种shell语言解释器 bash和dash 查看当前/bin/sh 指向哪种解释器: ls /bin/sh -al lrwxrwxrwx 1 root root 4 Mar 26 2018 /bi
-
Android 使用Shell脚本截屏并自动传到电脑上
Android设备用久了,截屏是个麻烦事.更麻烦的是通过qq传到电脑上,倒腾半天.其实用adb命令就可以截屏,然后写个pull的语句就可以拉到电脑上了.文件名为capture.sh, 内容如下: #! /bin/bash adb shell screencap -p /sdcard/test.png #adb pull /sdcard/test.png ~/Desktop/test.png dir=~/Desktop/ curr=`date "+%Y-%m-%d %H:%M:%S"`
-
shell 字符串操作(长度,查找,替换)详解
复制代码 代码如下: 工作中字符串操作举例 filename='/home/admin/jobs/CnClickstat/DFSLoader/loader.cfg' #下面是使用shell字符串操作 buName1=${filename#*/jobs/} #去除'/home/admin/jobs/CnClickstat/DFSLoader/loader.cfg'前缀得到'CnClickstat/DFSLoader/loader.cfg' buName1=${buName1%%/*} #去除'Cn
-
Shell字符串截取的实现方法(非常详细)
Shell 截取字符串通常有两种方式:从指定位置开始截取和从指定字符(子字符串)开始截取. 从指定位置开始截取 这种方式需要两个参数:除了指定起始位置,还需要截取长度,才能最终确定要截取的字符串. 既然需要指定起始位置,那么就涉及到计数方向的问题,到底是从字符串左边开始计数,还是从字符串右边开始计数.答案是 Shell 同时支持两种计数方式. 1) 从字符串左边开始计数 如果想从字符串的左边开始计数,那么截取字符串的具体格式如下: ${string: start :length} 其中,stri
-
linux shell字符串截取的详细总结(实用!)
目录 一.字符串变量的截取操作 1.从指定位置(index)截取固定长度 2.截取指定字符串(子字符串)左边的字符 3.截取指定字符串(子字符串)右边的字符 二.用cut命令截取(适合处理管道流或行文本字符) 补充:使用%和%%:截取的是指定字符前边内容 总结 一.字符串变量的截取操作 对字符串变量的截取操作一般都是通过${操作符}的方式进行,如下: 1.从指定位置(index)截取固定长度 格式:${string:start:length} 其中,string 是要截取的字符串,start 是
-
React报错Too many re-renders解决
目录 总览 传递函数 传递依赖 移入依赖 传递对象属性 记忆值 总览 产生"Too many re-renders. React limits the number of renders to prevent an infinite loop"错误有多方面的原因: 在一个组件的渲染方法中调用一个设置状态的函数. 立即调用一个事件处理器,而不是传递一个函数. 有一个无限设置与重渲染的useEffect钩子. 这里有个示例来展示错误是如何发生的: import {useState} fro
-
Tomcat报错: JDBC unregister 解决办法
Tomcat报错: JDBC unregister 解决办法 摘要: The web application [web application] registered the JDBC driver [net.sourceforge.jtds.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has be
-
python 字符串转列表 list 出现\ufeff的解决方法
如下所示: #文件内容 lisi lock = open("lock_info.txt", "r+",encoding="utf-8") lock_line = lock.readline() lock_list = lock_line.split(",") print(lock_list) y = lock_line.encode('utf-8').decode('utf-8-sig') print(y) #打印结果如下 [
-
jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法
在自己练手时遇到了EL表达式被当成字符串处理而没有正确解析的现象.当时工程中使用的Javaee5, web.xml <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/
-
tensorflow 报错unitialized value的解决方法
Attempting to use uninitialized value mean_squared_error/total 如图: 原因一:使用了tf.metrics.mean_squared_error(labels, predictions) 解决方法: 1.将其换成tf.losses.mean_squared_error(labels, preditions) 或者 2.加一个tf.lacal_variables_initializer() 原因二:将一些节点写在了tf.Session(
随机推荐
- less简单入门(CSS 预处理语言)
- 实例讲解JavaScript中instanceof运算符的用法
- Grunt针对静态文件的压缩,版本控制打包的实例讲解
- python 读取excel文件生成sql文件实例详解
- 详解.NET中使用Redis数据库
- 将数字格式的计算结果转为汉字格式
- 2004开发技术年度综述之Java世界
- MySQL中字符串函数详细介绍
- javascript中的float运算精度实例分析
- Python获取当前页面内所有链接的四种方法对比分析
- 利用Js+Css实现折纸动态导航效果实例源码
- 详解js静态资源文件请求的处理
- 进一步深入Ruby中的类与对象概念
- 一条SQL语句搞定Sql2000 分页
- jQuery树控件zTree使用方法详解(一)
- 获取元素距离浏览器周边的位置的方法getBoundingClientRect
- C#递归算法之快速排序
- Android APP编写简单答题器
- django 2.0更新的10条注意事项总结
- 一道值得深入思考的iOS面试题详解